4.4힙 세그먼트


    힙 세그먼트(heap segment)는 프로그래머가 자유롭게 메모리를 할당하고 해제할 수 있는 공간입니다. 함수 호출이 끝나면 스택 프레임이 사라지면서 해제되는 지역 변수와 달리 힙 세그먼트에 할당한 메모리는 해제하지 않는 한 메모리 공간에 계속 남아 있습니다. 힙 세그먼트에 메모리를 할당한 다음 해제하지 않아 메모리가 계속 남아 있는 상황을 메모리 누수(memory leak)라고 합니다. 그림 9-2에서 힙에 있는 화살표는 힙이 늘어날 수 있는 방향을 의미한다고 했습니다. 힙은 스택과 달리 늘어날 수 있는 최대 크기가 정해져 있지 않다는 점이 중요합니다. C++ 코드를 통해 우리가 작성한 코드가 어느 세그먼트에 들어가는지 직접 살펴보겠습니다.

    코드 9-1 memory/segment.cpp

    #include <iostream>
    
    // CODE
    int add(int a, int b) {  // #1
        return a + b;
    }
    
    int subtract(int a, int b){
        return a - b;
    }
    
    // DATA
    int global_x = 10;       // #2
    
    int main(void) {
        // STACK
        int local_x = 20;    // #3
    
        // HEAP
        int * heap_x = (int*)malloc(sizeof(int));   // #4
        *heap_x = 30;
        free(heap_x);        // #5
    
        return 0;
    }
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.