c - gtk_list_store_clear() 函数在 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不会增加对象的引用计数
推荐阅读
- python - 从 FTP 文件夹中读取 csv
- html - CSS问题页眉和页脚不保持高度
- r - r - 删除数据框中每个主题的第一行条件
- bash - 在bash脚本的变量中存储路径内的目录名称
- javascript - 动态添加工具提示
- sql - 来自 apache spark sql 的 ParseException 错误
- amazon-web-services - 附加/附加到传递给cloudformation的用户数据?
- mongodb - 尝试下载支持 mongodb 源配置配置元素的插件
- events - 如何在 rxjs 上创建可重放的事件总线
- json - 在反应中获取json数据显示TypeError