Menu
Coddy logo textTech

스택 vs 힙 메모리

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 31번째.

C 프로그램이 실행될 때, 메모리의 두 가지 별개의 영역인 stackheap을 사용합니다. 이 메모리 영역들 간의 차이를 이해하는 것은 효과적인 C 프로그래밍을 위해 필수적이며, 특히 포인터와 동적 메모리 할당을 작업할 때 중요합니다.

스택(stack)은 정적 메모리 할당에 사용됩니다. 이곳은 지역 변수, 함수 매개변수 및 함수 호출 정보가 저장되는 곳입니다. 스택은 시스템에 의해 자동으로 관리됩니다. 지역 변수를 선언하면 스택에 메모리가 할당되고, 변수가 범위를 벗어나면 해당 메모리는 자동으로 해제됩니다.

void function() {
    int x = 10;  // 스택에 할당됨
    char arr[100];  // 마찬가지로 스택에 할당됨
    // 함수가 종료되면 메모리가 자동으로 해제됨
}

힙(heap)은 동적 메모리 할당에 사용됩니다. 이것은 프로그램 실행 중에 요청할 수 있는 더 큰 메모리 풀입니다.

스택과 달리 힙은 수동 관리가 필요합니다. 메모리를 명시적으로 요청해야 하며, 사용이 끝나면 나중에 이를 해제해야 합니다. 이는 더 많은 제어권을 제공하지만 그만큼 더 많은 책임이 따릅니다.

주요 차이점은 관리 방식입니다. 스택 메모리는 자동이며 크기가 제한되어 있는 반면, 힙 메모리는 수동이며 훨씬 더 큽니다. 다음 레슨에서는 malloc()free()와 같은 함수를 사용하여 힙 메모리를 다루는 방법을 배우게 됩니다.

치트 시트

C 프로그램은 두 개의 별개 메모리 영역을 사용합니다:

스택(Stack): 정적 메모리 할당에 사용됩니다. 지역 변수, 함수 매개변수 및 함수 호출 정보를 저장합니다. 메모리는 자동으로 관리됩니다. 즉, 변수가 선언될 때 할당되고 범위를 벗어날 때 해제됩니다.

void function() {
    int x = 10;  // 스택에 할당됨
    char arr[100];  // 역시 스택에 할당됨
    // 함수가 종료될 때 메모리가 자동으로 해제됨
}

힙(Heap): 동적 메모리 할당에 사용됩니다. 수동 관리가 필요한 더 큰 메모리 풀입니다. malloc()free()와 같은 함수를 사용하여 명시적으로 메모리를 요청하고 해제해야 합니다.

주요 차이점: 스택 메모리는 자동이며 크기가 제한되어 있는 반면, 힙 메모리는 수동이며 훨씬 더 큽니다.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨