Memory area
메모리 영역
컴퓨터 프로그램이 실행될 때, 메모리는 여러 영역으로 나누어져 특정 목적에 따라 사용됩니다. 이러한 메모리 영역은 다음과 같이 구분됩니다.
코드 영역 (Code or Text Segment):
프로그램의 명령어 코드가 저장되는 영역입니다.
CPU는 이 영역에 있는 명령어들을 하나씩 순서대로 실행합니다.
이 영역은 읽기 전용으로 설정되어, 프로그램 실행 도중 코드가 변경되지 않도록 합니다.
데이터 영역 (Data Segment):
프로그램에서 선언된 전역 변수와 정적 변수가 저장되는 영역입니다.
초기화된 데이터 영역과 초기화되지 않은 데이터 영역으로 나뉘어져 있을 수 있습니다.
프로그램 시작 시 메모리에 할당되고, 프로그램 종료 시 메모리에서 해제됩니다.
힙 영역 (Heap Segment):
동적 메모리 할당이 이루어지는 영역입니다.
프로그램 실행 중에 필요에 따라 메모리를 동적으로 할당하거나 해제할 때 사용됩니다.
C언어에서는
malloc
,free
등의 함수로, C++에서는 **new
**와 **delete
**로 관리됩니다.힙 영역은 주로 큰 데이터 구조체나, 프로그램 실행 중(런타임)에 크기가 결정되는 데이터를 저장하기 위해 사용됩니다.
스택 영역 (Stack Segment):
함수의 호출 정보(호출된 함수의 주소, 매개변수, 지역 변수, 반환 주소 등)가 저장되는 영역입니다.
함수가 호출될 때마다 해당 함수의 정보가 스택에 푸시되고, 함수가 종료되면 팝되어 정보가 제거됩니다.
컴파일 타임에 영역의 크기가 결정됩니다.
스택은 후입선출(LIFO, Last-In First-Out) 구조를 가지며, **
push
**와pop
연산으로 데이터를 관리합니다.
Last updated