Указатель GtkTreeIter не работает - PullRequest
0 голосов
/ 02 июля 2018

Для следующего кода из учебника 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);

Есть идеи, почему? Буду признателен за понимание, спасибо.

1 Ответ

0 голосов
/ 05 июля 2018
GtkTreeIter *iter;
gtk_tree_store_append (store, iter, NULL);

Какое значение имеет здесь? Это не определено. GtkTreeIter структура нигде не размещена. Передача такого указателя является UB.

Вы должны распределить его либо по стеку (GtkTreeIter iter), либо по куче (GtkTreeIter * iter = g_new (GtkTreeIter, 1))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...