프로세스의 메모리 구조
•
가상 메모리 또는 논리적 메모리
스택과 힙
•
동적 할당
◦
런타임 단계에서 메모리를 할당 받는 것
스택
•
지역 변수, 매개변수, 실행되는 함수에 의해 늘어나거나 줄어드는 메모리 영역
•
함수가 호출될 떄마다 호출될 의 환경 등 특정 정보가 스택에 계속해서 저장
•
재귀함수 사용 시 새로운 스택 프레임을 매번 사용하기 때문에 다른 인스턴스 변수를 방해 X
참고
힙
•
동적으로 할당받는 변수
•
malloc(), free() 함수를 통해 관리
•
동적으로 관리받는 자료 구조의 경우 힙 영역 사용
참고
스택과 힙 차이
데이터 영역과 코드 영역
•
정적 할당
◦
컴파일 단계에섯 메모리를 할당하는 것
데이터 영역
•
BSS segment
◦
전역 변수 또는 static, const로 선언되어 있고 0으로 초기화 또는 초기화가 어떤 값으로도 되어 있지 않은 변수들이 할당되는 곳
•
Data segment
◦
전역 변수 또는 static, const로 선언되어 있고 0이 아닌 값으로 초기화된 변수가 할당되는 곳
참고
•
code/text segment
◦
프로그램의 코드
◦
사용자가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 공간
참고