LuaJIT увеличивает размер стека / кучи
Вопрос
Я продолжаю получать сообщение об ошибке нехватки памяти в 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.