Page 96

[그림 7-2]는 앞에 나온 코드를 실행한 후의 메모리 상태를 표현한 것이다. 여기서 ptr 변수는 여전히 스택에 있지만, 이 변수가 가리키는 값은 힙에 있다. 포인터 역시 일종의 변수이기 때문 에 스택이나 힙에 존재하는데, 종종 이 사실을 잊기 쉽다. 반면 동적 메모리는 항상 힙에 할당 된다. 그림 7-2 스택

QUS

?

QUS

CAUTION_ 항상 포인터 변수를 선언하자마자 nullptr나 적절한 포인터로 초기화해야 한다. 절대로 초기화

하지 않은 상태로 내버려두지 않는다.

다음 코드는 포인터가 스택과 힙에 모두 있는 예를 보여준다. int** handle = nullptr; handle = new int*; *handle = new int;

여기서는 먼저 정수 포인터에 대한 포인터를 handle이란 변수로 선언했다. 그런 다음 정수 포 인터를 담는 데 충분한 크기로 메모리를 할당한 뒤 그 메모리에 대한 포인터를 handle에 저장 했다. 이어서 이 메모리(*handle )에 정수를 담기 충분한 크기의 힙 메모리를 동적으로 할당했 다. [그림 7-3]은 이렇게 두 포인터 중 하나(handle )는 스택에, 다른 하나(*handle )는 힙에 있도록 두 단계로 구성한 상태를 보여준다. 그림 7-3 스택

handle

*handle

?

266 3부 전문가답게 C++ 코딩하기

**handle

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement