3

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

谢谢

4

1 回答 1

3

除了玩具示例外,我自己没有使用过 LuaJIT。但是由于没有其他人提供任何答案......

从浏览文档来看,LuaJIT 依赖于标准协程库的 Coco 扩展。Coco 引入的更改之一是创建新协程的函数现在采用指定堆栈大小的可选参数。

引用 Coco 文档:

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

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

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

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

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

于 2009-08-31T21:06:07.457 回答