一塊Lua userdata可能持有對Lua對象的引用嗎? (就像一張桌子,或另一塊用戶數據?)。基本上,我想知道的是:Lua userdata gc
我可以創建一段用戶數據,當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;
}
[ie假設Vertex & Quaternion是真正的大塊用戶數據]。
現在,假設我有一個使用userdata Vertex和userdata Quaternion的Lua用戶函數,並創建了一個userdata Bar(因爲我想保存空間,所以不需要userdata Foo) - 然後我需要以某種方式爲用戶數據Vertex */Quaternion *不被gc-ed。
它似乎令人費解。你爲什麼想這樣做? – lhf 2010-06-14 00:49:35
@lhf:上述編輯是否有意義? – anon 2010-06-14 08:43:49
現在這是一個不同的問題。簡短的回答並不是混合使用兩種類型的內存管理:在C中顯式對Lua中的自動顯示。見諾曼的答案。 – lhf 2010-06-14 09:57:07