[c++] 생성자를 대체할 수 있는 new 표현식

다음은 new 표현식을 대체할 수 있는 두 가지 새로운 기능에 대한 예시입니다.

  1. operator new를 오버로딩하여 재정의할 수 있습니다. 예를 들어, 특정 메모리 할당 정책을 적용하거나 메모리 할당 실패 시 사용자 지정 로직을 수행할 수 있습니다.
void* operator new(std::size_t size) {
    // 사용자 정의 메모리 할당 로직 구현
    // ...
    return allocatedMemory;
}
  1. 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