【发布时间】:2013-05-06 15:28:42
【问题描述】:
我在看:
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
注意free 不会在每个链表项的程序结束时调用。
问题:malloc'd 内存会在程序结束时自动free'd 吗?
【问题讨论】:
-
我认为内存在程序结束时被释放,因为一旦进程终止,它的所有结构和内存位置都应该被释放。
标签: c
我在看:
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
注意free 不会在每个链表项的程序结束时调用。
问题:malloc'd 内存会在程序结束时自动free'd 吗?
【问题讨论】:
标签: c
malloc'd 内存是否在程序结束时自动
free'd?
不,它不是 C 语言意义上的 freed。当程序结束时,它会返回给操作系统,但除非你显式调用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
}
}
【讨论】: