Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- https://vetenir.tistory.com/
- https://eo-oe.tistory.com/
- https://hjmag1120.tistory.com/
- https://mynameiskgws.tistory.com/
- 이리5조
- https://ji-han.tistory.com/
- 태어난김에 보스까지
- 스파르타코딩클럽
Archives
- Today
- Total
info8995 님의 블로그
20일차(C++에서의 변수와 메모리 구조) 본문
변수의 종류
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)
- 특징: 프로그램의 실행 코드가 저장되는 영역.
- 용도: 실행 가능한 기계어 코드 저장.
이런 구조를 이해하면 변수와 메모리 관리에 대한 명확한 이해가 가능해지고, 최적화된 코드를 작성하는 데 도움이 됩니다!
'TIL(Today I Learned) > C++' 카테고리의 다른 글
| 22일차(상수, 포인터) (0) | 2025.01.16 |
|---|---|
| 21일차(헤더 파일과 CPP 파일 분할 및 빌드 과정 이해) (0) | 2025.01.15 |
| 19일차(Get, Set함수) (0) | 2025.01.13 |
| 16일차(vector) (0) | 2025.01.08 |
| 14일차(디자인패턴-싱글톤4일차(디자인패턴-싱글톤) (0) | 2025.01.06 |