힙 메모리 사용 방법
1) C Style
2) C++ Style
3) Safer C++ Style
1. C스타일
(1)malloc 명령어 사용
(2) C style class Cat
컴파일: 된다. 그런데, 분명히 컨스트럭터와 디스트럭터를 생성해 놓았음에도 불구하고 "meow" "bye" 가 호출되지 않는다.
*C 스타일(malloc) 의 힙 메모리 관련 명령어들은 그냥 사용하지 말 것.
2. C++ 스타일
new, delete 키워드 사용
방금 코드에서 malloc 부분을 new로, free 부분을 delete로 치환해 보자.
//array의 경우
//int의 경우에는
3. Safer C++ style
위의 방식대로 할 경우에...만약에 if
프로그래밍을 하다가 delete 부분을 잊어버린다면?
즉, 메모리 해제를 깜빡 했을 경우에는..?
Constructor는 콜이 되었지만 destructor가 콜이 되지 않았을 경우에
물론 잊지 말고 delete를 써 주면 좋겠지만, 원천적으로 이 Memory Leak 문제를 차단할 수 있는 방법이 있다.
smart_ptr 스마트 포인터를 사용해 주면 된다.
#include <memory>와 함께 unique_ptr 명령어 하나만 활용해주면,
delete 명령어를 사용하지 않아도 자동으로 메모리가 해제된다.
//Array의 경우
STL 컨테이너 vector 사용해주면 해결할 수 있다.
//int의 경우
Dynamic Allocation 동적 할당 예제
이렇게 힙 메모리를 활용해서,
vector object를 스택 위에 쌓아놓고, 여기서 가리키는 공간에
고양이를 원하는 만큼 실행시간 runtime에 만들어 낼 수 있다.
'모던C++ > 메모리 구조 Memory Structure' 카테고리의 다른 글
7. 힙 스택 스태틱 Heap Stack Static - 언제 어떻게 사용해야 할까 (0) | 2022.07.06 |
---|---|
5. 힙 메모리 Heap memory 에 대한 모든 것 - Heap vs Stack (0) | 2022.06.30 |
4. 스택 메모리 - 스택 프레임 Stack Frame, Call Stack, this (0) | 2022.06.16 |
3. 메모리 속 변수 타입 Variable Types - Struct, class, 포인터의 크기 (0) | 2022.06.16 |
2. 메모리 속 변수 타입 Variable Types - sizeof(), Array, Pointer, int... (0) | 2022.06.16 |
1. 메모리 속 변수들에 대한 설명 - Stack 스택 (0) | 2022.06.16 |