С++ позволяет перегружать operator new
- как глобальный, так и для каждого класса - обычный operator new
, operator new[]
, используемый с оператором new[]
и размещением operator new
отдельно.
Первые два из этих трех обычно перегружены для использования настраиваемых распределителей и добавления трассировки. Но размещение operator new
кажется довольно простым - оно фактически ничего не делает внутри. Например, в Visual С++ реализация по умолчанию просто возвращает адрес, переданный в вызов:
//from new.h
inline void* operator new( size_t, void* where )
{
return where;
}
Что еще можно было сделать? Почему и как я мог разумно перегрузить размещение operator new
?