私は見ています:
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
free
リンクされたリスト項目ごとに、プログラムの最後に通知が呼び出されません。
質問: malloc
'd メモリfree
は、プログラムの最後に自動的に 'd されますか?
私は見ています:
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
free
リンクされたリスト項目ごとに、プログラムの最後に通知が呼び出されません。
質問: malloc
'd メモリfree
は、プログラムの最後に自動的に 'd されますか?
malloc されたメモリ
free
は、プログラムの最後に自動的に 'd されますか?
いいえ、free
C の意味での 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
}
}