info8995 님의 블로그

20일차(C++에서의 변수와 메모리 구조) 본문

TIL(Today I Learned)/C++

20일차(C++에서의 변수와 메모리 구조)

info8995 2025. 1. 14. 21:01

변수의 종류

C++에서는 변수는 사용 위치와 생명 주기(lifetime)에 따라 다음과 같이 구분됩니다.

1. 지역 변수 (Local Variable)

  • 함수나 블록 내에서 선언되며, 해당 범위(scope) 내에서만 접근 가능합니다.
  • 메모리의 스택(Stack) 영역에 저장됩니다.
  • 함수가 호출되면 생성되고, 함수가 종료되면 자동으로 소멸됩니다.
  • 예시:

2. 전역 변수 (Global Variable)

  • 함수 외부에서 선언되며, 프로그램 전체에서 접근 가능합니다.
  • 메모리의 데이터(Data) 영역에 저장됩니다.
  • 프로그램 시작 시 생성되고, 프로그램 종료 시 해제됩니다.
  • 예시:
     

3. 정적 변수 (Static Variable)

  • 함수 내에서 선언되지만, 메모리의 데이터(Data) 영역에 저장됩니다.
  • 함수가 호출될 때 초기화되며, 프로그램 종료 시까지 값이 유지됩니다.
  • 예시:
     

4. 외부 변수 (Extern Variable)

  • 다른 파일에 선언된 전역 변수를 참조할 때 사용됩니다.
  • extern 키워드를 사용하여 선언합니다.
  • 예시:
     


메모리 영역

C++ 프로그램은 실행 중 다음과 같은 메모리 영역을 사용합니다.

1. 스택 영역 (Stack)

  • 특징: 함수 호출 시 지역 변수를 저장하며, 함수가 종료되면 메모리에서 자동으로 해제됩니다.
  • 용도: 지역 변수 및 함수 호출 시의 매개변수 저장.
  • 장점: 메모리 할당/해제가 자동으로 처리되므로 속도가 빠름.
  • 단점: 크기가 제한적이며, 수동으로 관리 불가.
  • 예시:
     

2. 데이터 영역 (Data)

  • 특징: 전역 변수, 정적 변수, 상수 등이 저장됩니다.
  • 용도: 프로그램 실행 시 생성되고, 종료 시 해제됩니다.
  • 구성:
    • 초기화 데이터 영역: 초기값이 지정된 전역/정적 변수 저장.
    • 비초기화 데이터 영역(BSS): 초기값이 없는 전역/정적 변수 저장.
  • 예시:
     

3. 힙 영역 (Heap)

  • 특징: 동적 메모리 할당 시 사용되며, 사용자가 직접 메모리 할당/해제를 관리해야 합니다.
  • 용도: 크기가 가변적인 데이터 저장.
  • 단점: 메모리 누수 가능성.
  • 예시:
     

4. 코드 영역 (Text)

  • 특징: 프로그램의 실행 코드가 저장되는 영역.
  • 용도: 실행 가능한 기계어 코드 저장.

이런 구조를 이해하면 변수와 메모리 관리에 대한 명확한 이해가 가능해지고, 최적화된 코드를 작성하는 데 도움이 됩니다!