如果我有一个atype obj
对象atype
被定义为typedef struct myType {...} * atype
,我有什么办法可以获得obj
的所有引用,或者至少有多少引用有吗?
atype obj;
... // Allocate
aStruct a;
a.obj = obj;
aStruct b;
b.obj = obj;
int refs = get_references(obj); // refs should now = 2
有什么想法吗?欢迎采用变通方法和替代方法。
答案 0 :(得分:2)
不,没有隐含的方式。但是你可以实现一个ref
函数来自动增加一个计数器,一个unref
函数来减少它。
a.obj = ref(obj);
/* ... */
a.obj = something_else;
unref(obj);
该计数器可以是任何struct
的外部计数器。例如,您可以使用哈希表来跟踪指针 - 计数器关系。
您还可以通过g_object_ref
/ g_object_unref
查看提供此问题的gobject
。