我的GTK应用程序中有一个打包盒,我每隔一段时间就用一个全新的条目替换它(至少现在是因为我很着急)。
由于我用新实例替换它,我是否需要从内存中明确地释放旧包装盒内容或者GTK中是否有垃圾收集?
如果我确实需要明确需要释放该对象,是否有一个命令将递归地转到该树中的所有对象(就像它会清除我的主包装盒内的盒子容器中的按钮)?另外,连接到对象的信号和处理程序怎么样?
我正在使用C / GTK-2.0(gcc v4.4.3和GTK 2.20.0)。
答案 0 :(得分:6)
GObjects是引用计数的。将窗口小部件打包到容器中时,容器将接管所有权。
执行gtk_container_remove()
时,容器保留的引用将被删除,这通常会导致窗口小部件被销毁。
所以不,你不应该明确地销毁它,只需将它从容器中移除即可。
gtk_container_remove()
API的documentation也表示直接在孩子身上调用gtk_widget_destroy()
会更有效率,所以如果那就是你已经在做的那样你就是细