C获取对象的所有引用?

时间:2012-02-12 06:07:33

标签: c object pointers memory-management struct

如果我有一个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

有什么想法吗?欢迎采用变通方法和替代方法。

1 个答案:

答案 0 :(得分:2)

不,没有隐含的方式。但是你可以实现一个ref函数来自动增加一个计数器,一个unref函数来减少它。

a.obj = ref(obj);

/* ... */
a.obj = something_else;
unref(obj);

该计数器可以是任何struct的外部计数器。例如,您可以使用哈希表来跟踪指针 - 计数器关系。

修改

您还可以通过g_object_ref / g_object_unref查看提供此问题的gobject