반응형
메모리 구조
코드(Code) 영역
프로그램의 코드가 저장되는 영역, CPU는 코드 영역에 저장된 명령을 하나씩 처리한다.
데이터(data) 영역
전역 변수와 정적 변수가 저장되는 영역
힙(heap) 영역
사용자 정의에 의해 할당/해제되는 영역
동적 메모리 영역으로 데이터를 찾기 위해서는 주소 값이 필요하다.
메모리의 낮은 주소에서 높은 주소 방향으로 할당되는 FIFO(선입선출, First in First out) 방식
* 힙 오버플로우 (Heap Overflow) : 메모리 공간이 부족하여, 힙이 스택 공간을 침범하는 경우
스택(stack) 영역
프로그램이 자동으로 사용하는 임시 메모리 영역
정적인 메모리 영역으로 스택 알고리즘을 통해 데이터를 찾을 수 있다.
지역변수, 매개변수가 저장되는 영역으로 코드 블록이 끝나면 자동으로 해제된다.
메모리의 높은 주소에서 낮은 주소 방향으로 할당되는 LIFO(후입선출, Last in Last out) 방식
* 스택 프레임 (Stack Frame) : 함수의 지역변수, 매개변수, 반환 주소값 등 함수의 호출 정보
* 스택 오버플로우 (Stack Overflow) : 메모리 공간이 부족하여, 스택이 힙 공간을 침범하는 경우
반응형
반응형
'개념' 카테고리의 다른 글
[C++] 참조자 개념 (2) const 참조자와 참조형을 반환하는 함수 (3) | 2022.09.30 |
---|---|
[C#] 클래스의 메모리 할당 (Stack, Heap) (1) | 2022.09.20 |
[C++] 참조자 개념 (1) 참조자와 Call-by-reference (0) | 2022.09.20 |
[개념] 구조체 패딩 (Struct Padding) (1) | 2022.04.15 |
[개념] 빅 엔디안 & 리틀 엔디안 (Big-Endian & Little-Endian) (0) | 2022.03.28 |
댓글