1

我在看:

http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html

free并且在每个链表项的程序结束时都不会调用通知。

问题:malloc'd memoryfree在程序结束时会自动'd 吗?

4

1 回答 1

1

malloc'd 内存是否free在程序结束时自动'd'?

不,它不是freeC 意义上的 d。当程序完成时,它会返回给操作系统,但除非您free显式调用 a,否则它是内存泄漏。

您可以按如下方式修复内存泄漏:

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-12T13:21:42.163 回答