LuaJit 增加堆栈/堆大小

我在 LuaJit 中不断地遇到内存不足错误。如何增加堆栈或堆大小?

谢谢。

原文链接 https://stackoverflow.com/questions/1354572

点赞
stackoverflow用户68204
stackoverflow用户68204

我个人并没有使用过 LuaJIT,除了一些玩具样例之外。但是由于其他人还没有提供任何答案...

从浏览文档来看,LuaJIT 依赖于 Coco 扩展标准协程库。Coco 引入了一些变化,其中一个是创建新协程的函数现在需要一个可选参数来指定堆栈大小。

引用 Coco 文档:

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

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

可选参数 cstacksize 指定为协程分配的 C 栈大小:

  • 如果未给出或为 nil 或零,则使用默认堆栈大小。
  • 如果 cstacksize-1,则不分配 C 栈。
  • 任何其他值都会被舍入到最小大小 (即使用 1 获取最小大小)。

此外,还有一个新函数 coroutine.cstacksize([newdefault]) 用于设置默认的 C 栈大小,以及一些相应的 C API 更改。

此外,在 LuaJIT 版本的 luaconf.h 中还有许多编译时配置选项。其中可能有一些设置默认值的选项。在 Windows 上,还有一个链接时的设置可执行文件的基本堆栈,通过 MSVC 的 LINK.EXE 通过应用程序的 .DEF 文件中的 STACKSIZE 声明设置。

2009-08-31 21:06:07