1
후 free'ing하지 :내가 찾고 있어요 malloc에
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
및 free
가 연결된 각 목록 항목에 대한 프로그램의 마지막에 호출되지 않습니다 알 수 있습니다.
질문 : 프로그램 마지막 부분에 malloc
'메모리가 자동으로 free
입니까?
후 free'ing하지 :내가 찾고 있어요 malloc에
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
및 free
가 연결된 각 목록 항목에 대한 프로그램의 마지막에 호출되지 않습니다 알 수 있습니다.
질문 : 프로그램 마지막 부분에 malloc
'메모리가 자동으로 free
입니까?
프로그램 끝에 malloc 된 메모리가 자동으로
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
}
}
내가 메모리를 한 번 프로세스가 종료되고 모든 구조와 메모리 위치가 해제되어야하기 때문에 프로그램의 끝에서 해제됩니다 생각합니다. –