是否有可能为一个片的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回调和自己释放内存。

scroll top