개인 자료 3
프로세스 메모리 구조
class SomeClass() {
private:
static int staticNum;
public:
SomeClass() {};
~SomeClass();
int sum(int n1, int n2) {
return n1 + n2;
}
};
int SomeClass::staticNum = 0;
int main(void?) {
int a = 1;
int b = 2;
char* str = "abcd";
int c = sum(a, b);
std::cout << c;
return 0;
}
- 코드 영역
- 실행하는 프로그램의 코드를 저장하는 공간
- 위의 코드 일체가 기계어로 바뀌어 저장됨
- 실행하는 프로그램의 코드를 저장하는 공간
- 데이터 영역
- 리터럴
- 소스코드에 고정된 값
- 변수 값이 변하지 않는 데이터
- 위의 코드에서 1, 2, "abcd" 등
- 리터럴들을 저장함으로써 메모리 효율 추구
- int an = 10;... 이 변수가 달라지면서 백만번 반복 된다면, 10을 하나만 데이터 영역에 저장함으로써 메모리 아낌
- 전역 변수
- 스태틱 변수
- 위의 코드에서 static
- 스택
- 위의 코드에서 static
- 프로그램에서 사용되는 임시 메모리 영역
- 현재 실행되고 있는 구역의 지역 변수나 함수 정보가 저장
- 프로그램이 실행되면서 늘어났다가 줄었다가 반복함.
- 스택의 용량은 윈도우 기준 기본값이 1MB입니다.
- 컴파일러 옵션에서 조절이 가능합니다.
- 현재 프로그램의 흐름을 저장. - 힙
- 프로그래머가 제어하는 메모리 공간
- new 를 가지고 메모리를 할당하고, delete 메모리를 삭제
- 메모리 할당을 하고, 사용하지 않으면 제거를 해줘야 됨
- 리터럴
Leave a comment