В силу того, что код для изучения, использующий GtkListStore попадается противоречивый, у меня возникло пара вопросов:
1. Как надо правильно освобождать память из под элементов в GtkListStore в конце работы? gtk_list_store_clear()? Встретил код, где итеративно с помощью gtk_tree_model_get() берутся элементы и им делается g_free() -- но, насколько я понимаю, удаляются только копии элементов, а не сами элементы.
2. Что происходит с предыдущим элементом в GtkListStore, когда я делаю gtk_tree_model_set() по существующему итератору? Ведь память из под него не освобождается? Как правильно удалить предыдующий элемент в модели перед тем как задать новый на его место?
Нужно для подобного, что бы избежать утечек памяти:
GtkTreeIter iter;
struct MyData* data;
...
// Get item
gtk_tree_model_get(model, &iter, 0, &data, -1);
// set new name
g_free(data->name);
data->name = generate_name();
// Update item
gtk_tree_model_set(model, &iter, 0, data, -1);
free_my_struct(data);
Использование gtk_list_store_remove() для этого выглядит несколько брутально, ибо придется городить нечто для случаев, когда заменяется первый/крайний элемент.
Спасибо.
Ответ на:
комментарий
от welkam
Ответ на:
комментарий
от kondor
Ответ на:
комментарий
от Deleted
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум GtkListStore (2010)
- Форум Fictionbook хранение жанров в GtkTreeModel (2012)
- Форум GTK+ / как изменить атрибуты текстовых элементов GtkListStore? (2004)
- Форум [Gtk+] Можно ли хранить в GtkListStore поле обобщенного типа? (2011)
- Форум [GTK+] Вывод альтернативного значения в GtkTreeView при пустом поле в GtkListStore (2011)
- Форум [GTK+, Glade] Как с помощью Glade задать у GtkListStore поле типа GDK_TYPE_COLOR ? (2011)
- Форум О неопределённом поведении и багах оптимизатора clang на примере разбора цикла статей Криса Латтнера, разработчика clang. (2017)