C & C++, 일반
[프로그래밍 일반] Heap, stack, static 영역의 메모리
그레이트쪼
2017. 1. 7. 18:18
힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내 |
- 프로그래밍 문제에서 위와 같은 제약사항이 나오는데 사용되는 메모리 영역에 대해서 알아보자
- 메모리 공간은 크게 스택(statck), 힙(heap), 데이터(data)영역으로 나뉘어진다.
(위의 조건에서 정적 메모리라는 것이 데이터 영역을 의미하는 것으로 보인다.)
- 데이터(Data) 영역 (정적 메모리)
- 전역 변수와 static 변수가 할당되는 영역
- 프로그램의 시작과 동시에 할당되고 프로그램이 종료되어야 메모리에서 소멸됨
- 스택(Stack) 영역
- 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역
- 함수 호출이 완료되면 사라짐
- 힙(Heap) 영역
- 동적으로 할당된 변수
- 프로그래밍 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> void foo(int a); int val = 10; // 'val' in data segment char string[] = "Hello World"; // 'string' in data segment int main() { int i = 100; // 'i' in stack area foo(i); return 0; } void foo(int a) { // 'a' in stack area int* ptr = (int*) malloc(sizeof(int)*a); // 'ptr' in heap area } |