1
後不free'ing我看:的malloc
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
,並注意free
沒有在程序每個鏈接的列表項的到底叫什麼。
問題:在程序結束時malloc
'd內存自動free
'd?
後不free'ing我看:的malloc
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
,並注意free
沒有在程序每個鏈接的列表項的到底叫什麼。
問題:在程序結束時malloc
'd內存自動free
'd?
在程序結束時,malloc'd內存是否自動
free
'd?
不,它不是free
d在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
}
}
我覺得既然要釋放一旦進程被終止其所有的結構和內存位置的內存在程序結束釋放。 – 2013-05-12 13:22:30