[英]Lua userdata gc
一個Lua用戶數據是否可以保留對Lua對象的引用? (像表還是另一條用戶數據?)。 基本上,我想知道的是:
我可以在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用戶函數,該函數接受一個userdata頂點和一個userdata四元數,並創建一個userdata欄(我不想使用userdata Foo,因為我想節省空間)–那么我需要某種方式userdata Vertex * / Quaternion *不進行gc-ed。
自從我對lua做任何事以來已經有一段時間了。 我認為,如果引用的數據是由lua機器創建的,那么它將自行清理它。 否則,您必須等待C代碼中的gc回調並自己釋放內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.