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