2010-07-25 41 views
0

我需要在我的gtk +應用程序中刪除所有並清除GList。我怎樣才能做到這一點?gtk + clear GList

謝謝

回答

0

您必須使用API​​來釋放列表,並更新包含在你的UI應用程序列表適當的容器中。

void g_list_free (GList *list); 

這樣分配創建列表中的內存被釋放和UI容器被刷新顯示空白列表。

+0

'g_list_free'不刷新任何UI容器。 – ptomato 2010-07-25 14:56:31

+0

@ptomato:我要求他在第一行刷新UI容器。 – 2010-07-25 15:01:02

0

功能g_list_free來可以做的工作,但如果動態分配的,不要忘記之前釋放數據,也表示here:在這種情況下,你必須去通過列表中的每個元素,並使用g_free(如果使用g_malloc進行分配),或者釋放(如果使用malloc進行分配),或者與alloc函數匹配的任何內容(例如在C++中刪除新的內容...)

2

一種簡單的方法來釋放列表及其中的數據,然後清除列表,如下所示:

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

NULL是空列表,以便最後一行清除它,以便您可以再次使用它。

當然,如果您的數據應該由其他功能釋放,請使用該功能而不是g_free()作爲ShinTakezou的評論。