Lua的用户数据GC
-
27-09-2019 - |
题
是否有可能为一个片的Lua用户数据来保存参照的Lua对象? (像一个表,或另一块用户数据的?)。基本上,我想知道的是:
我可以以这样的方式taht当GC运行时,用户数据可以说创造了一块用户数据的:“嘿,我手里拿的这些其他对象的引用,将它们标记以及”
编辑:响应LHF:
假设我有:
struct Vertex {
double x, y, z;
}
struct Quaternion {
double w, x, y, z;
}
现在,我可以这样做:
struct Foo {
Vertex v;
Quaternion q;
}
但是假设代替我想:
struct Bar {
Vertex *v;
Quaternion *q;
}
[即。假设顶点&四元数是用户数据]的真正的大碎片。
现在,假设我有一个Lua用户功能,需要一个用户数据顶点和用户数据四元数,并创建一个用户数据吧(我不想用户数据美孚,因为我想节省空间) - 然后我需要以某种方式对用户数据顶点* /四元数*为不是GC-编
解决方案
是否有可能为一块LUA用户数据的持有参照LUA对象?
否:一种用户数据的指针不能装到其他的Lua对象。如果你想使用用户数据以保持另一个Lua的对象还活着,你必须使用弱表做到这一点。 Roberto的书就如何做到这一点一个部分。
其他提示
已经有一段时间,因为我做了什么卢阿。我认为,如果引用的数据是由LUA机创建的,那么它会清理自己。否则,您必须等待您的C代码的GC回调和自己释放内存。
不隶属于 StackOverflow