Pergunta

Eu continuo recebendo um erro fora da memória em Luajit. Como faço para aumentar a pilha ou o tamanho da pilha?

Obrigado

Foi útil?

Solução

Eu não usei Luajit, além de exemplos de brinquedos. Mas desde que ninguém mais forneceu respostas ainda ...

De skimming the documentação, Luajit depende das extensões de coco para a biblioteca de coroutina padrão. Uma das alterações introduzidas pelo Coco é que as funções que criam uma nova coroutina agora tomam um argumento opcional que especifica o tamanho da pilha.

Citando os documentos de coco:

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

O argumento opcional cstacksizeEspecifica o tamanho da pilha C para alocar para a coroutina:

  • Um tamanho de pilha padrão é usado se cstacksize não é dado ou é nil ou zero.
  • Nenhuma pilha C é alocada se cstacksize é -1.
  • Qualquer outro valor é arredondado para o tamanho mínimo (ou seja, use 1 para obter o tamanho mínimo).

Há também a nova função coroutine.cstacksize([newdefault]) Isso define o tamanho padrão da pilha C, bem como algumas alterações correspondentes na API C.

Além disso, existem inúmeras opções de configuração de tempo de compilação na versão luajit do luaconf.h. Pode haver algo que defina o padrão. No Windows, também há uma configuração de tempo de link para a pilha básica do executável, definida pelo link.exe do MSVC através da instrução Stacksize no arquivo .def do aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top