2013-05-12 45 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 
    } 
}