LuaJit увеличить размер стека / кучи - PullRequest
3 голосов
/ 30 августа 2009

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

Спасибо

1 Ответ

3 голосов
/ 01 сентября 2009

Я не использовал 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 по умолчанию, а также некоторые соответствующие изменения в API C.

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

...