Pregunta

Me sale un error de falta de memoria en LuaJit. ¿Cómo puedo aumentar el tamaño de pila o montón?

Gracias

¿Fue útil?

Solución

No he utilizado yo LuaJIT, que no sea con ejemplos de juguete. Pero puesto que nadie más ha proporcionado ninguna respuesta todavía ...

De rozando la documentación , LuaJIT depende de las extensiones Coco a la biblioteca corrutina estándar. Uno de los cambios introducidos por Coco es que las funciones que crean un nuevo corrutina ahora toman un argumento opcional que especifica el tamaño de la pila.

Citando la documentación Coco:

  

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

     

El argumento opcional cstacksize   especifica el tamaño de la pila de C a   asignar a la co-rutina:

     
      
  • A tamaño de la pila por defecto se utiliza si cstacksize no se da o es nil o   cero.
  •   
  • No pila C se asigna si cstacksize es -1.
  •   
  • Cualquier otro valor se redondea hasta el tamaño mínimo (es decir, uso 1 para obtener   el tamaño mínimo).
  •   

Existe también la nueva coroutine.cstacksize([newdefault]) función que establece el tamaño de pila predeterminado C, así como algunos cambios correspondientes en la API C.

Además, hay numerosas opciones de configuración de tiempo de compilación en la versión LuaJIT de luaconf.h. Puede haber algo allí que define el valor predeterminado. En Windows, también hay un escenario de pila básica del ejecutable, establecido por link.exe de MSVC a través de la declaración STACKSIZE en el archivo .def de la aplicación en tiempo de enlace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top