주기억장치(RAM) 에는 크게 Heap, Stack, Data, Code 로 사용하는 영역(Segment)이 있다.
( BSS 영역도 있다는데 나중에 알아보자. )
각 데이터 영역은 함수, 변수, 상수 등의 시작 주소값을 가진다.
ex) main 함수의 주소값 : 08048400
- Heap
malloc(Memory Allocation), new 등으로 동적 메모리를 선언할 때 할당되는 영역
- Stack
지역변수(local), 매개변수(파라미터, parameter), 리턴(return) 등 임시로 사용할 메모리를 선언할 때 할당되는 영역
- Data
전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등 프로그램 실행과 동시에 선언할 때 할당되는 영역
- Code
함수, 제어문, 상수 등 함수들을 선언할 때 할당되는 영역
- 요약 -
Heap : 동적할당에 사용
Stack : 정적할당 등에 사용
Data : 프로그램 시작과 종료시까지 사용
Code : 코드내용 활용에 사용
반응형
'C,C++' 카테고리의 다른 글
[C++]warning C4482 : 비표준 확장 에 대해서 (0) | 2019.01.31 |
---|---|
[C++]type casting에 관하여 (0) | 2019.01.31 |
Segment 란 (0) | 2019.01.23 |
동적(Dynamic) vs 정적(Static) (0) | 2019.01.22 |
싱글바이트, 멀티바이트, 유니코드 (0) | 2019.01.22 |