簡體   English   中英

Lua用戶數據gc

[英]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對象的引用?

編號 A用戶數據不能容納一個指針到另一個的Lua對象。 如果要使用用戶數據來使另一個Lua對象保持活動狀態,則必須使用弱表來進行操作 羅伯托的書是關於如何做部分

自從我對lua做任何事以來已經有一段時間了。 我認為,如果引用的數據是由lua機器創建的,那么它將自行清理它。 否則,您必須等待C代碼中的gc回調並自己釋放內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM