2013-05-12 26 views

回答

1

在程序結束時,malloc'd內存是否自動free'd?

不,它不是freed在C的意義上。當程序結束時它會返回到操作系統,但除非明確地調用free,否則這是內存泄漏。

您可以修復內存泄漏,如下所示:

void main() { 
    item * curr, * head; 
    int i; 

    head = NULL; 

    for(i=1;i<=10;i++) { 
     curr = (item *)malloc(sizeof(item)); 
     curr->val = i; 
     curr->next = head; 
     head = curr; 
    } 

    curr = head; 

    while(curr) { 
     void *toFree = curr; 
     printf("%d\n", curr->val); 
     curr = curr->next ; 
     free(toFree); // <<<== Add this 
    } 
}