C++ - NEW 구현
new는 인수로 사이즈를 받지만 표준 new는 size가 0에서도 올바르게 동작하는 것을 규격으로 정하고 있다.
직접 구현 할 때에 의식하면 약간으로 규격에 준한 코드가 되어서 좋다.
void* operator new(std::size_t size) {
if (size == 0) {
size = 1;
}
return malloc(size);
}
정리
- 표준 new는 사이즈 0에도 대응하고 있다
- 완전히 준하는 것에는 웬만한 지식이 필요한 것이기에 적어도 이것만이라도 기억하는 것이 좋다
- 그런 레어한 케이스에 대응함으로써 new에 비교 명령이 늘어나다니 아깝다.! 라는 사람도 교양으로 기억하는 것이 좋다
이 글은 2020-08-07에 작성되었습니다.