2013-05-12 2 views
1

후 free'ing하지 :내가 찾고 있어요 malloc에 ​​

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

free가 연결된 각 목록 항목에 대한 프로그램의 마지막에 호출되지 않습니다 알 수 있습니다.

질문 : 프로그램 마지막 부분에 malloc '메모리가 자동으로 free입니까?

+0

내가 메모리를 한 번 프로세스가 종료되고 모든 구조와 메모리 위치가 해제되어야하기 때문에 프로그램의 끝에서 해제됩니다 생각합니다. –

답변

1

프로그램 끝에 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 
    } 
} 
관련 문제