2010-07-25 6 views
0

내 gtk + 응용 프로그램에서 모두 제거하고 GList를 지울 필요가 있습니다. 내가 어떻게 할 수 있니? gtk + clear GList

당신은 목록을 해제하고 적절하게 UI 응용 프로그램의 목록이 들어있는 컨테이너를 업데이트하기 위해 API를 사용할 필요가

답변

0

주셔서 감사합니다.

void g_list_free (GList *list); 

이렇게하면 목록을 만들기 위해 할당 된 메모리가 해제되고 UI 컨테이너가 빈 목록을 표시하기 위해 새로 고쳐집니다.

+0

'g_list_free'는 UI 컨테이너를 새로 고치지 않습니다. – ptomato

+0

@ptomato : 첫 번째 줄에 UI 컨테이너를 새로 고치라고했습니다. –

0

함수 g_list_free 일을 할 수 있지만, 동적으로 할당 된 경우하기 전에 데이터를 를 해제하는 것을 잊지 마세요뿐만 아니라 here 말했다 :이 경우는리스트의 각 요소를 통해 이동하고 (g_free을 사용해야합니다 g_malloc로 할당 된 경우) 또는 free (malloc로 할당 된 경우) 또는 alloc 함수와 일치하는 항목 (예 : C++에서 새로운 것에 대한 삭제)

2

목록과 데이터를 쉽게 비울 수있는 방법 및 목록을 지우고 다음과 같이하십시오 :

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

NULL is 비어있는 목록으로, 마지막 줄에서 지울 수 있으므로 다시 사용할 수 있습니다.

데이터가 다른 기능에 의해 해제되어야하는 경우 물론, g_free() 대신에 해당 기능을 신택주 주석으로 사용하십시오.