我在LuaJit中一直遇到内存不足的错误。如何增加堆栈或堆大小?
谢谢。
谢谢。
我自己没有使用过LuaJIT,除了一些玩具例子。但由于没有其他人提供答案...
从浏览文档得知,LuaJIT依赖于标准协程库的Coco扩展。 Coco引入的变化之一是创建新协程的函数现在带有可选参数,用于指定堆栈大小。
引用Coco文档:
coro = coroutine.create(f [, cstacksize])
func = coroutine.wrap(f [, cstacksize])
可选参数
cstacksize
指定为协程分配的C堆栈的大小:
- 如果未提供或为
nil
或0,则使用默认堆栈大小。- 如果为
-1
,则不分配C堆栈。- 任何其他值都将向上取整至最小大小(即使用
1
以获取最小大小)。
还有一个新函数coroutine.cstacksize([newdefault])
,用于设置默认的C堆栈大小,以及一些相应的C API更改。
此外,LuaJIT版本的luaconf.h中有许多编译时配置选项。可能有一些设置默认值的选项。在Windows上,可执行文件的基本堆栈大小还可以通过MSVC的LINK.EXE和应用程序.DEF文件中的STACKSIZE语句进行链接时设置。