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

wag*_*639 5 c gtk

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

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

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

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

unw*_*ind 7

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

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

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

文档gtk_container_remove()API还表示,它可以更有效地只是调用gtk_widget_destroy()直接作用于孩子,所以如果这是你已经做什么你的罚款.

  • 此外,当您销毁容器小部件时,它会释放对其中包含的所有小部件的引用,这通常会导致它们也被销毁,所以是的,它是递归的。 (2认同)