더북(TheBook)


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;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.