- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
什么时候在 C 中分配 Lua gc 内存
void *lua_newuserdata (lua_State *L, size_t size);
?当 Lua 中不再有引用指向它时,还是我必须注意删除它?
最佳答案
当 在 Lua 中没有对它的引用时,使用 lua_newuserdata
分配的内存将被释放。这就是垃圾收集的工作原理。有重要的后果:
无需释放 C 程序中的内存。完全不需要担心释放它。
不要释放该内存。
不要在您的 C 程序中存储指向该内存的指针并假定它永远有效。
如果您想使用该指针,请确保在 Lua 中有对它的引用。
换句话说,在调用 lua_newuserdata
之后,如果您稍后要在你的 C 程序。否则它可能会在你返回 Lua 后消失。
关于c - 删除使用 lua_newuserdata 分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452725/
什么时候在 C 中分配 Lua gc 内存 void *lua_newuserdata (lua_State *L, size_t size); ?当 Lua 中不再有引用指向它时,还是我必须注意删除
如何释放 lua_newuserdata 分配的内存? 我有一个名为Foo的类,这个类有一个构造函数和一个析构函数,我需要同时执行这两个,但我不知道如何使用C++运算符delete,因为我没有使用ne
我正在尝试将 Lua 与 Qt 的 QMetaObject 系统集成。我有一个派生自 QObject 的类,我使用 QObject::staticMetaObject 根据类名绑定(bind)到 Lu
下面的例子只是为了演示问题;实际上我有创建功能并返回许多不同的用户数据对象,在其中一些之间我可能想调用 Lua 垃圾收集器。 此外,我使用的是 Lua 5.3.3 版,它在 Windows 和 Lin
我是一名优秀的程序员,十分优秀!