몽상실현개발주의

[따배씨] 12.14 메모리 누수와 free() 의 중요성 본문

Language/C

[따배씨] 12.14 메모리 누수와 free() 의 중요성

migrationArc 2021. 6. 15. 23:19

[따배씨] 12.14 메모리 누수와 free() 의 중요성

따배씨 - 따라하며 배우는 C언어

12강 Storage Classes, Linkage and Memory Management

12.14 메모리 누수 Leak 와 free() 의 중요성

#include <stdio.h>
#include <stdlib.h>

int main(){
    printf("Dummy Output\n");
    
    {
        // Heap Memory가 할당되는 block
        int  n = 100000000;
        
        // Heap 메모리 공간 요청, 시작 주소값 ptr 에 저장
        int* ptr = (int*)malloc(n * sizeof(int));
        
        if (!ptr)// if(ptr == NULL)
        {
            printf("Malloc() failed\n");
            exit(EXIT_FAILURE);
        }
        
        for (int i = 0; i < n; ++i)
            ptr[i] = i+1;
        
        printf("Dummy Output\n");
    }
    // Heap Memory가 할당되는 block이 끝나도 ptr 에 저장된 주소값은 사라지지만
    // 할당된 Heap Memory는 남아 있고, 접근할 방법도 없어져 버림
    
    printf("Dummy Output\n");
    
    return 0;
}
  • block이 끝나버려, ptr를 통해 메모리 접근을 할수 없음
  • 하지만 free() 선언을 하지 않았기 때문에, 동적 할당 받은 Heap 메모리 공간은 유지가 됨
    • 메모리 누수 발생
free(ptr);
ptr = NULL
  • 메모리 반환을 해 주어야함
int* ptr_backup
{
  	ptr_backup = ptr;
}

free(ptr_free);
  • block 에서 동적 할당 받은 메모리 주소 값을 backup 을 해 두는 방법도 있다

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

 

Comments