less than 1 minute read

프로세스 메모리 구조

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. 데이터 영역
    • 리터럴
      • 소스코드에 고정된 값
      • 변수 값이 변하지 않는 데이터
      • 위의 코드에서 1, 2, "abcd" 등
      • 리터럴들을 저장함으로써 메모리 효율 추구
      • int an = 10;... 이 변수가 달라지면서 백만번 반복 된다면, 10을 하나만 데이터 영역에 저장함으로써 메모리 아낌
    • 전역 변수
    • 스태틱 변수
      • 위의 코드에서 static
        • 스택
    • 프로그램에서 사용되는 임시 메모리 영역
    • 현재 실행되고 있는 구역의 지역 변수나 함수 정보가 저장
    • 프로그램이 실행되면서 늘어났다가 줄었다가 반복함.
    • 스택의 용량은 윈도우 기준 기본값이 1MB입니다.
      • 컴파일러 옵션에서 조절이 가능합니다.
    • 현재 프로그램의 흐름을 저장. - 힙
    • 프로그래머가 제어하는 메모리 공간
      • new 를 가지고 메모리를 할당하고, delete 메모리를 삭제
    • 메모리 할당을 하고, 사용하지 않으면 제거를 해줘야 됨

Tags:

Categories:

Updated:

Leave a comment