[1. 개요]
placement new 라는 문법(혹은 기능) 은 일반적인 동적 할당 보다 조금 더 세밀하게 메모리의 수명을 관리할 수 있게 해준다.
일반적으로 객체를 대상으로 하는 new 는 메모리 할당 및 생성자 호출을
delete 는 소멸자 호출 및 메모리 해제를 같이 진행 하게 해준다.
그러나, 아래와 같은 요구사항이 있을 수 있다.
- 메모리를 할당만 하고, 생성자 호출은 뒤로 미루고 싶다.
- 소멸자를 호출하여, 객체 내부의 메모리를 정리하지만, 객체 자체의 메모리는 당장 해제하지 않고 싶다.
특히, 아래와 같은 상황도 있을 수 있다.
- 공유 메모리를 대상으로 특정 객체를 공유하고 싶다.
- 즉, 메모리는 이미 할당이 되어있지만, 객체의 생성자를 호출하고 싶다.
주의할 점은
- 소멸자가 자동으로 호출되지 않는다. (소멸자 호출을 반드시 명시해야 한다.)
[2. 예제]
실행 결과
buf address 0xf261fff770 ptr2 address 0xf261fff770 1 2 3 4 5 6 7 8 9 10 data0 address 0xf261fff770 9 2500 ABCD data1 address 0x24f0fa55fa0 QWER Call destructor |
buf, ptr2, data0 의 시작 주소가 모두 같다.
'C++' 카테고리의 다른 글
buffer overflow 사례1 (0) | 2025.06.26 |
---|---|
Segmentation fault 사례5 (0) | 2025.06.24 |
wchar_t 사용에 관하여 [2] (0) | 2025.05.13 |
wchar_t 사용과 관련하여. (0) | 2025.05.12 |
std::bind (0) | 2025.04.28 |