Domanda

Continuo a ricevere un errore di memoria insufficiente in LuaJit. Come faccio ad aumentare la dimensione dello stack o heap?

Grazie

È stato utile?

Soluzione

Non ho usato io stesso LuaJIT, se non con esempi di giocattoli. Ma dal momento che nessun altro ha fornito alcuna risposta ancora ...

Da sfiorando la documentazione , LuaJIT dipende dalle estensioni Coco alla libreria coroutine standard. Una delle modifiche introdotte da Coco è che le funzioni che creano una nuova coroutine ora prendere un argomento facoltativo che specifica la dimensione dello stack.

Citando la documentazione Coco:

  

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

     

Il cstacksize argomento opzionale   specifica la dimensione dello stack C   assegnare per il coroutine:

     
      
  • Una dimensione di stack di default viene utilizzato se cstacksize non è dato o è nil o   zero.
  •   
  • Nessun pila C è assegnato se cstacksize è -1.
  •   
  • Qualsiasi altro valore viene arrotondato alla dimensione minima (cioè uso 1 arrivare   la dimensione minima).
  •   

C'è anche la nuova funzione coroutine.cstacksize([newdefault]) che imposta la dimensione dello stack predefinita C, nonché alcune modifiche corrispondenti alle API C.

Inoltre, ci sono numerose opzioni di configurazione in fase di compilazione nella versione LuaJIT di luaconf.h. Ci può essere qualcosa in là che imposta il default. Su Windows, v'è anche un ambiente per lo stack di base del file eseguibile, fissato dal LINK.EXE di MSVC tramite la dichiarazione STACKSIZE nel file .DEF dell'applicazione di collegamento in tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top