gtk - GtkTreeIter 指针失败
问题描述
对于 GTK 教程中有关设置树的以下代码:
/* Create a model. We are using the store model for now, though we
* could use any other GtkTreeModel */
store = gtk_tree_store_new (N_COLUMNS,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING);
GtkTreeIter iter;
gtk_tree_store_append (store, &iter, NULL);
/* Acquire an iterator */
gtk_tree_store_set (store, &iter,
WORD, "antidisestablishmentarianism",
COUNT, "29",
LINES, "1,33,89",
-1);
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
WORD, "monkey",
COUNT, "2",
LINES, "1,55",
-1);
如果我没有传递对 iter 的引用,而是声明一个指针并传递它,则代码将失败:
GtkTreeIter *iter;
gtk_tree_store_append (store, iter, NULL);
知道为什么吗?将不胜感激任何见解谢谢。
解决方案
GtkTreeIter *iter;
gtk_tree_store_append (store, iter, NULL);
iter 在这里有什么价值?它没有定义。GtkTreeIter
struct 未在任何地方分配。传递这样一个指针就是UB。
您应该将其分配在堆栈 ( GtkTreeIter iter
) 或堆 ( GtkTreeIter * iter = g_new (GtkTreeIter, 1)
)
推荐阅读
- naudio - 将 ASIO 输入路由到 WDM 虚拟麦克风
- ios - .scn 模型中的多个节点导致 iMessage 扩展崩溃
- r - 可变列数的变异
- angular - 根据运行时标志提供 API 或模拟版本
- sql-server - 在 TSQL 中查询排序的许可证号
- sql - 在 SQL 中查询我们想要的列存储在另一个表中的列
- javascript - 将常量从一个 JavaScript 文件导入另一个文件
- jenkins - 能够在 localhost:8080 上访问 Jenkins 服务,无法远程访问 Jenkins 服务 - macOS High Sierra 10.13.4
- javascript - 在数组中找到孩子所在的父母
- azure-sql-database - 使用 MSI 时的 Azure Sql Db 连接字符串