我在看:
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
并且在程序结束时不会为每个链接列表项调用通知free
。
问题:程序结束时malloc
'内存会自动free
吗?
答案 0 :(得分:1)
在程序结束时,malloc'd内存会自动
free
吗?
不,在C语言中它不是free
d。程序完成后返回给操作系统,但除非你明确调用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
}
}