[c++] 생성자를 대체할 수 있는 new 표현식
다음은 new
표현식을 대체할 수 있는 두 가지 새로운 기능에 대한 예시입니다.
operator new
를 오버로딩하여 재정의할 수 있습니다. 예를 들어, 특정 메모리 할당 정책을 적용하거나 메모리 할당 실패 시 사용자 지정 로직을 수행할 수 있습니다.
void* operator new(std::size_t size) {
// 사용자 정의 메모리 할당 로직 구현
// ...
return allocatedMemory;
}
placement new
를 사용하여 자체적으로 생성자를 호출할 수 있습니다. 이를 통해 메모리를 할당한 후에 해당 메모리에 직접 생성자를 호출할 수 있습니다.
void* memory = operator new(sizeof(MyClass));
MyClass* obj = new (memory) MyClass(arguments);
이러한 기능들은 작성자에게 높은 유연성을 제공하며, 맞춤형 메모리 할당 및 초기화 방식을 구현할 수 있게 해줍니다.
참고 자료: https://en.cppreference.com/w/cpp/memory/new/operator_new, https://en.cppreference.com/w/cpp/language/new, https://en.cppreference.com/w/cpp/memory/new/placement_new