컴퓨터의 프로그램에서 프로세스가 차지하고 있는 메모리를 살펴보면

크게 Code, Data, Stack, Heap 영역으로 나뉘어져 있다.

이들을 각각 Segment라고 한다.

Untitled

  1. Code : 위 그림에서 text부분에 해당 한다. 작성한 코드가 들어가는 부분이다 읽기전용 영역이라 쓰기 작업이 들어오면 잘못된 메모리 접근(access violation) 에러가 발생하며, 프로세스가 종료될때까지 계속 유지 되는 영역이다 (그래서 Static)

  2. Data : 전역변수 (Global), 정적변수 (Static), 배열 (Array), 구조체(Struct)등이 저장된다.

    1. 초기화된 데이터는 : 위 그림에 data에 저장

    2. 초기화되지 않은 데이터 : bss(Block Stated Symbol)에 저장

    bss도 초기화를 하지만, 값자체를 초기화하는 것이 아니라 메모리상의 공간을 초기화

    data영역은 컴파일시간에 초기화하는 것이라면 bss는 런타임시간에 초기화한다

    이 영역 또한 프로세스의 종료까지 유지된다.

    (함수 내에 변수들은 여기에 포함되지 않음 함수내 지역변수는 stack에 할당됨 main 함수도 마찬가지)