프로세스의 메모리 공간 확인

리눅스 프로세스 메모리 구조

아래는 32비트 리눅스에서의 프로세스 메모리 구조

텍스트 (TEXT) 영역

코드가 적재되는 영역이다. 프로그램 실행 코드 즉, 기계어가 올라가는 영역으로 어플리케이션 수행시 임의로 이 영역에 데이터를 쓰려고 하면 메모리 접근 위반 에러가 발생함

데이터 (DATA) 영역

전역 변수가 적재되는 영역. 전역 변수(global variable)와 정적 변수(static variable), 초기화된 배열이 사용하는 영역으로 DATA와 BSS로 나뉜다.

힙 (HEAP) 영역

동적으로 메모리를 할당해서 사용하는 영역. 프로그램에서 mallocnew, free, delete 등으로 동적으로 메모리를 할당하고 해제하는 경우에 사용하는 메모리 영역이다. TEXT와 DATA영역에서 주로 메모리 액세스 위반 에러가 발생한다면 힙 영역에서는 메모리 사용후 적절히 해제하지 않으면, 메모리 사용량이 점진적으로 증가하는 메모리 누수가 발생한다.

스택 (STACK) 영역

프로세스나 스레드 수행 시 함수 호출에 사용되는 영역이다. 프로그램의 수행은 함수 호출을 통해 이뤄지는데, 함수 호출 시 사용되는 지역변수와 매개변수, 함수 종료 시 복귀 주소가 여기에 저장된다. 함수가 종료되면 해당 함수에서 사용하던 메모리는 반환한다. 이 영역은 어플리케이션 수행 시 자동으로 NULL로 초기화되지 않는다.