낮은 주소 → 높은 주소
코드 - 데이터 - BSS - 힙 - 스택
코드 | 데이터 | BSS | 힙 | 스택 | |
가지고 있는 값 | 함수, 제어문, 상수 |
초기화된 global, static 변수, 배열 |
초기화되지 않은 global, static 변수, 배열 | 사용자가 동적 할당한 변수 | 지역 변수, 매개 변수 |
크기 결정 시점 | 컴파일 타임 | 런타임 | |||
소멸 결정 시점 | 프로그램 종료 시 | 명시적으로 할당 해제하는 경우에만 | 블록을 빠져나갈 때 | ||
저장 방향 | 낮은 주소에서 높은 주소 방향 | 높은 주소에서 낮은 주소 방향 |
힙 | 스택 | |
장점 | 큰 메모리 풀이므로 큰 배열/구조체/ 클래스 할당 가능, 사용자가 관리할 수 있음 | 메모리 할당이 비교적 빠름, 비교적 크기가 작음 |
단점 |
메모리 할당이 비교적 느림, 메모리 릭 발생 가능 , 포인터를 통해 접근하게 되어 변수에 직접 접근하는 것에 비해 느림 |
스택에 할당된 메모리는 스택 범위에 있을 때만 접근 가능 |
참고한 블로그
'기타' 카테고리의 다른 글
디자인 패턴을 사용하는 이유 (0) | 2020.02.17 |
---|