C 设置新型号时是否需要释放GtkListStore?
我正在用C 设置新型号时是否需要释放GtkListStore?,c,model,gtk,free,gtk3,C,Model,Gtk,Free,Gtk3,我正在用C编写一个程序,并将Gtk+用于GUI。一切正常,但我对可能的内存泄漏有一些怀疑 我需要显示一个元素列表,然后通过搜索栏和按钮过滤这个列表。我想使用GtkTreeView和GtkListStore,如本文所述 执行过滤时,我只需创建一个新的GtkListStore,并用新元素填充它,然后在GtkTreeView中设置新模型 我是否需要释放我不再使用的那些模型,或者将Gtk+自动处理这些模型?断言您使用Gtk\u tree\u view\u set\u model交换模型 文件簿 gtk树
C
编写一个程序,并将Gtk+
用于GUI。一切正常,但我对可能的内存泄漏有一些怀疑
我需要显示一个元素列表,然后通过搜索栏和按钮过滤这个列表。我想使用GtkTreeView
和GtkListStore
,如本文所述
执行过滤时,我只需创建一个新的GtkListStore
,并用新元素填充它,然后在GtkTreeView
中设置新模型
我是否需要释放我不再使用的那些模型,或者将
Gtk+
自动处理这些模型?断言您使用Gtk\u tree\u view\u set\u model
交换模型
文件簿
gtk树视图集合模型()
设置GtkTreeView的模型。如果树视图已经有一个模型
设置时,它将在设置新模型之前将其删除。如果模型为空,
然后它将取消旧模式
这意味着,如果一个模型与视图相关联,它的referece计数器将减少1(实际上,我通过查看源代码证明,文档在这里不够明确“删除”的含义)
如果你像例子中说的那样处理它
/* 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\u object\u ref
或其他添加引用的方法,否则不需要执行任何其他操作
我强烈建议您获取并安装Gtk+
docbook条目
/* 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));