변수의 선언과 초기화
//변수의 초기화
int num = 5;
자료형 변수명 연산자 리터럴값 세미콜론
변수의 선언
int num;
자료형 (int, float, double, long long 등)과 변수명을 지정하면 변수를 선언할 수 있다.
- 변수 선언과 동시에 값을 할당하면 초기화라고 한다.
- int num = 5; → int형 변수 num에 5를 저장한다.
- 초기화하지 않으면 변수에는 **쓰레기 값(Garbage Value)**이 들어갈 수도 있다.
코드 실행과 메모리 이동
C++ 프로그램이 실행되면 코드와 변수가 메모리(RAM)에 로드된다.
- 프로그램 실행 시 코드가 하드디스크에서 RAM으로 이동한다.
- 코드 영역에서 어셈블리 언어로 변환 후 스택(Stack) 영역으로 이동한다.
- 프로그램이 실행되면서 변수들이 스택 또는 힙 영역에 저장된다.
✅ 실행 과정 ✅
1. 프로그램 실행 시 코드가 하드디스크에서 RAM으로 로드됨
- 실행 파일(EXE)이 하드디스크에서 RAM(메모리)으로 올라간다.
2. 코드 영역(Code Section)에 프로그램 코드(어셈블리 명령어)가 저장됨
- C++ 코드는 컴파일 후 어셈블리어로 변환되며, 실행될 준비가 된다.
- 코드 영역은 읽기 전용(Read-Only)으로 유지된다.
3. 프로그램 실행 중 변수는 각각의 메모리 영역에 저장됨
- 전역 변수, static 변수 → 데이터(Data) 영역에 저장
- 지역 변수, 함수 호출 정보 → 스택(Stack) 영역에 저장
- 동적 할당된 변수 → 힙(Heap) 영역에 저장
메모리 구조와 변수 저장
C++ 실행 시 메모리 영역
- 스택 영역은 함수 호출 시 지역 변수를 저장하는 공간이다.
- 스택은 LIFO(Last In, First Out) 구조로 동작하며,
메모리의 높은 주소에서 낮은 주소 방향으로 쌓인다. ( 스택영역은 끝에서 부터 채워져 올라감 ) - 스택에 할당된 변수는 해당 함수가 종료되면 자동으로 해제된다.
그리고 스택영역에 할당된 공간은 주소가 되며, 이를 '포인터' 라고 할 수 있다.
포인터는 할당된 공간(변수의 주소)를 가르킨다 라는것이다.
램의 최상단에는 운영체제가 있다.
✅ 요약 ✅
- 코드 실행 시 프로그램은 RAM으로 로드된다.
- 코드 영역에 어셈블리어로 변환된 명령어가 저장된다.
- 변수는 데이터/스택/힙 영역에 각각 저장된다.
- 스택은 LIFO 구조로 동작하며, 함수가 끝나면 자동 해제된다.
- 포인터는 메모리 주소를 저장하고, 해당 공간을 가리키는 역할을 한다.
'공부 > C++' 카테고리의 다른 글
C++ Class (0) | 2025.03.07 |
---|---|
C++ 포인터와 레퍼런스 (0) | 2025.03.07 |
C++ 함수에 대한 이해와 메모리 구조 (0) | 2025.03.07 |
기본 - C++ 프로그램의 메모리 구조 (0) | 2025.03.05 |
기본 - 컴파일러 (0) | 2025.03.05 |