首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GValue初始化/定稿的必要性

GValue初始化/定稿的必要性
EN

Stack Overflow用户
提问于 2018-09-26 18:11:46
回答 2查看 458关注 0票数 0

什么时候打电话给g_value_init/g_value_reset

目前,我在所有情况下都使用g_value_initg_value_reset,但我想知道是否可以加快速度。

我至少知道:

  • 当使用对象或装箱类型时,肯定需要调用g_value_reset,因为GValue可以获得引用,或者在它是GBoxed的情况下复制。
  • 当使用基本类型(如guintgboolean (没有任何内存管理))时,理论上g_value_reset调用应该是不必要的,因为不应该分配内存。我甚至读过这个实现,事实证明它是真的。但是,我担心作者可能会引入一个更改,开始分配一些内存(或者只是进行一些跟踪),然后就会导致内存泄漏。

这就是我目前的研究。我想扩大它,可能的支持正式文件参考资料。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-29 09:12:00

你目前的想法大多是正确的。必须始终使用g_value_init()来初始化堆栈分配的GValue。当一个g_value_unset()超出范围时,必须使用GValue来释放它的任何特定类型的数据。如果要将一个g_value_reset()重置为默认值,则应该使用GValue --注意,对于某些类型,这可能意味着它仍然指向已分配的内存。

g_value_unset()通常比g_value_reset()更频繁地使用。

票数 2
EN

Stack Overflow用户

发布于 2018-09-26 18:46:59

我对这个话题不太了解,但是我搜索了g_value_init,我发现这些GNOME开发人员的页面可能很有用:

https://developer.gnome.org/gobject/stable/gobject-Generic-values.html#g-value-reset

https://developer.gnome.org/glib/stable/glib-Basic-Types.html#gboolean

看看它是否有帮助

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52523831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档