我应该什么时候打电话g_value_init
/ g_value_reset
?
目前,我在所有情况下都在使用g_value_init
和g_value_reset
,但我想知道它是否可以加速。
我至少知道:
- 当使用对象或盒装类型时,肯定需要调用
g_value_reset
,因为 GValue 可能已经获得了引用,或者如果它是GBoxed
. - 当使用像
guint
or这样的基本类型gboolean
(没有任何内存管理)时,g_value_reset
理论上应该不需要调用,因为不应该为它们分配内存。我什至已经阅读了实现,它被证明是正确的。但是,我担心作者可能会引入更改并开始分配一些内存(或只是进行一些跟踪),然后会导致内存泄漏。
这就是我目前的所有研究。我想扩展它,可能得到官方文档参考的支持。提前致谢。