Вопрос

Я продолжаю получать сообщение об ошибке нехватки памяти в LuaJIT.Как мне увеличить размер стека или кучи?

Спасибо

Это было полезно?

Решение

Сам я не использовал LuaJIT, за исключением примеров с игрушками.Но поскольку больше никто пока не дал никаких ответов...

От беглого просмотра Документация, LuaJIT зависит от расширений Coco для стандартной библиотеки сопрограмм.Одно из изменений, внесенных Coco, заключается в том, что функции, создающие новую сопрограмму, теперь принимают необязательный аргумент, указывающий размер стека.

Цитирую документы Coco:

coro = coroutine.create(f [, cstacksize])
func = coroutine.wrap(f [, cstacksize])

Необязательный аргумент cstacksize задает размер стека C, который необходимо выделить для сопрограммы:

  • Размер стека по умолчанию используется, если cstacksize не дано или есть nil или ноль.
  • Стек C не выделяется, если cstacksize является -1.
  • Любое другое значение округляется в большую сторону до минимального размера (т. е.использование 1 чтобы получить минимальный размер).

Существует также новая функция coroutine.cstacksize([newdefault]) это устанавливает размер стека C по умолчанию, а также некоторые соответствующие изменения в C API.

Кроме того, в LuaJIT-версии luaconf.h имеется множество параметров конфигурации во время компиляции.Там может быть что-то, что устанавливает значение по умолчанию.В Windows также существует настройка времени соединения для базового стека исполняемого файла, задаваемая ссылкой MSVC.EXE с помощью инструкции STACKSIZE в файле приложения .DEF.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top