0Pricing
C++ Academy · 강의

스택 할당

자동 저장 영역의 작동 방식 알아보기

스택 할당은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

자동 저장 영역

지역 변수는 일반적으로 스택이라고 부르는 자동 저장 영역에 존재합니다. 실행이 해당 범위에 들어오면 생성되고 범위를 벗어나면 소멸합니다.

#include <iostream>

int main() {
    int x = 42;          // on the stack
    double pi = 3.14;    // on the stack
    std::cout << x << " " << pi << "\n";
}

스택은 커지고 작아집니다

각 함수 호출은 지역 변수를 담은 스택 프레임을 푸시합니다. 함수가 반환되면 프레임이 팝되고 지역 변수는 사라지므로 수동 정리가 필요하지 않습니다.

#include <iostream>

void greet() {
    int local = 7;          // pushed on call
    std::cout << local << "\n";
}                            // popped on return

int main() { greet(); }

LIFO 순서

스택은 후입선출 방식입니다. 가장 최근에 생성된 지역 변수가 범위가 끝날 때 가장 먼저 소멸합니다.

#include <iostream>

int main() {
    int a = 1;
    {
        int b = 2;   // created after a
        std::cout << b << "\n";
    }                // b destroyed first
    std::cout << a << "\n";
}

빠르고 저렴함

스택 할당은 스택 포인터만 이동하므로 매우 빠릅니다. 여유 메모리를 검색할 필요가 없고 힙에 필요한 것과 같은 관리 작업도 없습니다.

범위가 수명을 결정합니다

스택 객체는 선언된 블록 안에서만 유효합니다. 중첩 블록은 각각 고유한 범위를 가집니다.

#include <iostream>

int main() {
    for (int i = 0; i < 3; ++i) {
        int square = i * i;   // recreated each iteration
        std::cout << square << "\n";
    }
}

제한된 크기

스택에는 고정된 제한 크기가 있으며(대개 몇 메가바이트), 스택에 매우 큰 배열을 할당하면 스택 오버플로 충돌이 발생할 수 있습니다.

// Risky: a large fixed array on the stack
int big[1000000];   // may overflow the stack

스택 주소를 반환하면 버그입니다

지역 변수에 대한 포인터나 참조를 절대 반환하지 마십시오. 함수가 반환되면 해당 저장 영역은 사라지고 포인터는 댕글링 상태가 됩니다.

int* bad() {
    int local = 5;
    return &local;   // BUG: local dies here
}

대형 객체를 참조로 전달하기

큰 객체를 스택에 복사하는 것은 낭비입니다. const&로 전달하면 복사를 피하면서 스택 사용량을 작게 유지할 수 있습니다.

#include <string>

void print(const std::string& s) {  // no copy
    // use s
}

스택 객체에는 삭제가 필요하지 않습니다

컴파일러가 객체의 수명을 자동으로 관리하므로 스택 변수에 절대로 delete를 호출하면 안 됩니다.

#include <iostream>

int main() {
    int n = 10;
    // delete &n;   // ERROR: not heap-allocated
    std::cout << n << "\n";
}

스택의 배열

길이가 정해진 고정 크기 배열은 스택에 저장되며 범위가 끝나면 자동으로 해제됩니다.

#include <iostream>

int main() {
    int values[3] = {10, 20, 30};
    for (int v : values) std::cout << v << "\n";
}

스택을 우선 사용할 때

크기가 작고 수명이 짧으며 컴파일 시점에 크기를 알 수 있는 객체에는 스택을 우선 사용하십시오. 스택은 더 빠르고 자동으로 정리되므로, 정말 필요할 때만 힙을 사용하십시오.

빠른 확인

스택 할당에 대한 이해도를 확인해 보십시오.

복습

스택 할당은 범위에 연결된 자동 저장 공간을 사용하며, 변수는 범위에 들어갈 때 생성되고 나갈 때 LIFO 순서로 소멸한다는 것을 배웠습니다. 스택 할당은 빠르고 자동으로 정리되지만 크기가 제한됩니다. 지역 변수의 주소를 반환하지 말고, 스택 객체에 delete를 사용하지 마십시오.

자주 묻는 질문

“스택 할당” 강의는 무료인가요?

네 — “스택 할당” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“스택 할당”에서 뭘 배우나요?

자동 저장 영역의 작동 방식 알아보기 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C++ Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“스택 할당” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 스택 할당
  2. new/delete를 사용한 힙 할당
  3. 객체 수명
  4. 일반적인 메모리 버그
← C++ Academy(으)로 돌아가기