c त्रुटि: संरचना या संघ का सदस्य नहीं है, जिससे स्मृति लीक हो सकता है



struct memory-leaks (1)

मैं सी में एक लिंक्ड सूची बनाने की कोशिश कर रहा हूं, जो स्ट्रिंग में डेटा के रूप में ले सकता है और मैंने एक धक्का, स्वतंत्र और पॉप फ़ंक्शन को लागू किया है लेकिन मेरी समस्या यह है कि पॉप फ़ंक्शन में यह नाम के रूप में पहचानने वाला सदस्य नहीं है जब मैं निशुल्क यह।

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;
}

Im अनुमान लगा रहा है कि यह सूचक के लिए सूचक का उपयोग कर गलत के साथ कुछ करना है? किंडा अटक


कथन को free((*head)->name); बनाने के लिए आपको कोष्ठकों को (*head) आसपास रखा जाना आवश्यक है free((*head)->name);free(*head->name) को free(*(head->name)) रूप में समझाया गया है, यही वजह है कि कंपाइलर आपको चिल्लाता है

इस स्टैक ओवरफ़्लो पोस्ट का हवाला देते हुए, इसका कारण यह है कि पोस्टफिक्स ऑपरेटर्स ( -> ) में यूनरी ऑपरेटर्स (*) से अधिक प्राथमिकता है।





pop