sistema limbico lesiones hipocampo funcion falla enfermedades anatomia amigdala c struct memory-leaks linked-list pop

limbico - Error: no es miembro de una estructura o unión, lo que provoca pérdidas de memoria



lesiones del hipocampo (1)

Estoy tratando de hacer una lista vinculada en c que puede tomar una cadena como datos y he implementado una función push, free y pop pero mi problema es que en la función pop no reconoce el nombre como miembro cuando intento liberarlo eso.

typedef struct list { char* name; struct list* next; } node; void free_list(node*head) { if(head==NULL){ return; } node* temp=NULL; while (head!= NULL) { temp=head->next; free(head->name); free(head); head=temp; } head=NULL; } /*add elements to the front of the list*/ void push_list(node **head, char* name) { node *temp=malloc(sizeof(node)); if(temp==NULL) { fprintf(stderr,"Memory allocation failed!"); exit(EXIT_FAILURE); } temp->name=strdup(name); temp->next=*head; *head=temp; } void pop_list(node ** head) { node * next_node = NULL; if (*head == NULL) { return; } next_node = (*head)->next; free(*head->name); //this line generating error free(*head); *head = next_node; } bool empty_list(node *head){ return head==NULL; }

Supongo que tiene algo que ver con el uso incorrecto del puntero al puntero. Un poco atascado


Debe poner paréntesis (*head) para hacer que la declaración sea free((*head)->name); . free(*head->name) se interpreta como free(*(head->name)) , por lo que el compilador te grita.

Citando esta publicación de , la razón es porque los operadores de postfix ( -> ) tienen mayor precedencia que los operadores unarios (*) .