我有这段代码:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window, *fixed, *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
gtk_widget_set_size_request(window, 400, 400);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "Test");
gtk_widget_show(window);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), fixed);
gtk_widget_show(fixed);
button = gtk_button_new_with_label("click");
gtk_fixed_put(GTK_FIXED(fixed), button, 30, 30);
gtk_widget_show(button);
gtk_main();
return 0;
}
我试图释放内存,但失败了。也许有人修改这段代码,以便释放内存? 我读到了GTK中的内存管理,我在很大程度上理解它是如何工作的,但却未能释放内存......
我理解这些函数如何工作gtk_widget_destroy(),g_object_ref_seek(),g_object_ref()和g_object_unref()并且我不想在这些函数或文档中接收引用,我希望修改某人此代码这样就要释放内存。
感谢!
答案 0 :(得分:2)
您已将gtk_main_quit连接到窗口。当窗口被摧毁时,她的所有子窗口小部件也被销毁。