gpt4 book ai didi

c - 设置新模型时是否需要释放 GtkListStore?

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:59 24 4
gpt4 key购买 nike

我正在用 C 编写程序并使用 Gtk+ 作为 GUI。一切正常,但我对可能的内存泄漏有些怀疑。

我需要显示一个元素列表,然后通过搜索栏和按钮过滤这个列表。我想将 GtkTreeViewGtkListStore 一起使用,如 example 中所述.

执行过滤时,我只需创建一个新的 GtkListStore 并用新元素填充它,然后在 GtkTreeView 中设置新模型。

我是否需要释放那些我不再使用的模型,或者 Gtk+ 会自动处理它?<​​/strong>

最佳答案

断言您使用 gtk_tree_view_set_model 交换模型。

文档gtk_tree_view_set_model()

void                gtk_tree_view_set_model             (GtkTreeView *tree_view,
GtkTreeModel *model);

Sets the model for a GtkTreeView. If the tree_view already has a model set, it will remove it before setting the new model. If model is NULL, then it will unset the old model.

所以这意味着如果一个模型与 View 相关联,它的引用计数器将减少一个(我实际上通过查看源代码验证了这一点,文档在这里不够明确“删除”的意思))。

如果你按照例子说的那样处理

   /* Create a view */
tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));

/* The view now holds a reference. We can get rid of our own
* reference */
g_object_unref (G_OBJECT (store));

您不需要额外做任何事情,除非您显式调用 g_object_ref 或其他可以添加引用的方法。

我强烈建议您获取 devhelp并安装 Gtk+ 文档条目。

关于c - 设置新模型时是否需要释放 GtkListStore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22879544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com