GTK中的免费对象/小部件?

时间:2010-05-19 02:35:42

标签: c gtk

我的GTK应用程序中有一个打包盒,我每隔一段时间就用一个全新的条目替换它(至少现在是因为我很着急)。

由于我用新实例替换它,我是否需要从内存中明确地释放旧包装盒内容或者GTK中是否有垃圾收集?

如果我确实需要明确需要释放该对象,是否有一个命令将递归地转到该树中的所有对象(就像它会清除我的主包装盒内的盒子容器中的按钮)?另外,连接到对象的信号和处理程序怎么样?

我正在使用C / GTK-2.0(gcc v4.4.3和GTK 2.20.0)。

1 个答案:

答案 0 :(得分:6)

GObjects是引用计数的。将窗口小部件打包到容器中时,容器将接管所有权。

执行gtk_container_remove()时,容器保留的引用将被删除,这通常会导致窗口小部件被销毁。

所以不,你不应该明确地销毁它,只需将它从容器中移除即可。

gtk_container_remove() API的documentation也表示直接在孩子身上调用gtk_widget_destroy()会更有效率,所以如果那就是你已经在做的那样你就是细