C++ - NEW 구현

출처

new는 인수로 사이즈를 받지만 표준 new는 size가 0에서도 올바르게 동작하는 것을 규격으로 정하고 있다.
직접 구현 할 때에 의식하면 약간으로 규격에 준한 코드가 되어서 좋다.

void* operator new(std::size_t size) {
    if (size == 0) {
        size = 1;
    }
    return malloc(size);
}

정리

  1. 표준 new는 사이즈 0에도 대응하고 있다
  2. 완전히 준하는 것에는 웬만한 지식이 필요한 것이기에 적어도 이것만이라도 기억하는 것이 좋다
  3. 그런 레어한 케이스에 대응함으로써 new에 비교 명령이 늘어나다니 아깝다.! 라는 사람도 교양으로 기억하는 것이 좋다

이 글은 2020-08-07에 작성되었습니다.