gtk + clear GList - PullRequest
       3

gtk + clear GList

0 голосов
/ 25 июля 2010

Мне нужно удалить все и очистить GList в моем приложении gtk +.Как я могу это сделать?

Спасибо

Ответы [ 3 ]

2 голосов
/ 25 июля 2010

Простой способ освободить список и содержащиеся в нем данные, а затем очистить список, выглядит следующим образом:

g_list_foreach(list, g_free, NULL);
g_list_free(list);
list = NULL;

NULL - пустой список, поэтому последняя строка очищает его, чтобы вы могли использовать его снова.

Конечно, если ваши данные должны быть освобождены какой-либо другой функцией, используйте эту функцию вместо g_free(), как отмечает ShinTakezou.

0 голосов
/ 25 июля 2010

Функция g_list_free может выполнить эту работу, но не забудьте освободить данные до , если они распределяются динамически, как также сказано здесь : в этом случае вы должны пройти каждый элемент списка и использовать g_free (если выделено с помощью g_malloc), или free (если выделено с помощью malloc), или что-либо, что соответствует функции alloc (например, delete for new в C ++ ...)

0 голосов
/ 25 июля 2010

Вы должны использовать API, чтобы освободить список и соответствующим образом обновить контейнер, содержащий список, в вашем приложении пользовательского интерфейса.

void g_list_free (GList *list);

Таким образом освобождается память, выделенная для создания списка, и контейнер пользовательского интерфейса обновляется для отображения пустого списка.

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