我正在用C语言编写GTK程序。我正在使用GtkListStore来显示一些来自数据库的数据。发出特定信号后,我想删除GtkListStore中的所有行。我使用了gtk_list_store_clear()函数,但它引发了分段错误。
我的代码有什么问题?
//Globally declared
GtkListStore *liststore2;
//Inside main() function
liststore2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore2"));
//Inside signal handler function
gtk_list_store_clear(liststore2); //Error comes from here
如果在信号处理程序运行之前破坏构建器对象(使用g_object_unref(builder)
),liststore2可能指向释放的内存。
如果liststore2是独立的(即未被其他内容(例如GtkTreeView)引用,则会发生这种情况]
[gtk_builder_get_object会不是增加对象的引用计数