Lua堆栈清理(C API)

标签 lua

通常,在运行我定义的函数后,我会让 Lua 堆栈变得困惑,最多留下 6 个剩余条目。

在某些情况下,这会导致严重的内存泄漏/堆栈溢出!我通过在函数末尾使用 lua_settop( L, 0 ) 解决了它们。

在其他情况下,即使函数结束时堆栈不为空,也没有泄漏。

  • 什么时候需要清理 Lua 堆栈?
  • 堆栈中怎么可能同时包含大约 10,000 个元素? (函数中根本没有使用循环)

最佳答案

当然,退出用 C 编写的 Lua 函数时,不需要清理 Lua 堆栈,前提是该函数是从 Lua 调用的。如果您遇到内存泄漏,请发布一个显示问题的最小示例。如果堆栈有 10000 个条目,请确保您已调用 lua_checkstackluaL_checkstack .

关于Lua堆栈清理(C API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935678/

相关文章:

c++ - 是否有用于 C++ 的 Lua 表迭代器包装器?

c++ - 把lua脚本转换成等价的指令(opcode)呢?

lua - 如何使用 Luarocks 为 Lua5.2 和 5.1 安装库?

vim - init.lua 中的 Autocmd InsertEnter 来高亮光标不起作用

lua - 在lua中分配变量并在其之间添加标点符号

mysql - 使用 Luasql 和 sqlite3 与 DB 文件的通信无法正常工作

Lua模式匹配问题

c - 加载lua文件后静态结构数组打印垃圾

lua - 关于 Lua 5.3 字节码的文档

Lua 打印在同一行