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

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

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

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

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

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

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

所以不,你不应该明确地销毁它,只需从容器中删除就足够了。

gtk_container_remove() API的文档也说直接在子gtk_container_remove()调用gtk_widget_destroy()会更有效率,所以如果那就是你已经在做的那样你就没事了。