gtk_list_store_clear() 函数在 C 中引发分段错误

gtk_list_store_clear() function raises Segmentation Fault in C

我正在用 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 不会 增加对象

的引用计数