¿La lista rápida en la función llamada necesita estar libre para desasignar memoria?

Tengo un progtwig simple que usa la lista glib, donde tengo una función que devuelve la lista a la función de llamada

.aquí en la función llamada he descartado otra lista y la lista se devuelve a la función que llama. He liberado la lista en la función principal pero está en delimma que si la lista en la función llamada necesita liberarse para el rendimiento de la memoria.

#include  #include  #include  char *col_trim_whitespace(char *str) { char *end; // Trim leading space while(isspace(*str)) str++; if(*str == 0) // All spaces? return str; // Trim trailing space end = str + strlen(str) - 1; while(end > str && isspace(*end)) end--; // Write new null terminator *(end+1) = 0; return str; } GSList* line_parser(char *str) { GSList* list = NULL; char *token, *remstr=NULL ; //use glist for glib token = strtok_r(str,"\n",&remstr); while(token != NULL) { if(token[0] == ' ') { token = col_trim_whitespace(token); if(strcmp(token,"")==0) { token = strtok_r(NULL, "\n", &remstr); continue; } } list = g_slist_append(list, token); token = strtok_r(NULL,"\n",&remstr); } return list; } int main() { int *av,i,j,length; i=0; char str[] = " this name of \n the pet is the ffffffffffffffffffffffffffffff\n is \n the \n test\n program"; GSList *list1 = line_parser(str); // printf("The list is now %d items long\n", g_slist_length(list)); length = g_slist_length(list1); // printf("length=%d", length); for(j=0;jdata); } g_slist_free(list1); return 0; } 

¿Necesito liberar manualmente glist desde la función line_parser?

Como mencionó TingPing, strtok_r no asigna ninguna memoria, así que no es necesario que la strtok_r .

Si necesitara liberarlo (por ejemplo, si strdup que strdup el valor de strtok_r ), lo más probable es que desee usar g_slist_free_full .