int a = 1;
// 더하는 함수, 코드영역에 저장됨.
int Sum(int x, int y){
// 공유 변수, 데이터영역에 저장됨.
static int c;
c = x + y;
return c;
}
void main(void){
int b = 2;
// 변수를 넘겨주기 위해서 포인터로 선언함.
// 포인터 변수는 스택영역에 저장된다
int* p = new int(3);
cout << Sum(b, *p) << endl;
// 메모리 해제
delete p;
}
메모리 영역 | 해당 변수 | |
---|---|---|
스택 영역 | 지역 변수 | x, y, b, p |
데이터 영역 | 전역, 정적 변수 | a, c |
힙 영역 | 동적변수 | new int |
코드 영역 | 함수 | Sum, main |
C++에서는 컴파일 시, 모든 변수와 함수가 메모리에 적재된다.
데이터 영역
스택 영역
힙 영역
코드영역
스택은 LIFO방식이기 때문에 메모리 누수가 발생하지 않는다.
힙에 할당된 메모리는 delete연산자를 사용하여 해제해야 한다.