Есть много случаев, когда необходимо сделать переопределение оператора new. Как кто-то сказал, это в основном для пользовательского управления памятью.
Основной пример, с которым я лично имел дело, был для встроенных систем.
Во встроенной системе динамическое распределение памяти обычно является проблемой. Даже если у вас есть встроенная операционная система, которая поддерживает ее, у вас есть все виды проблем, с которыми вам, возможно, придется иметь дело (например, встроенные системы часто должны быть более детерминированными, чем их коллеги на ПК. Кроме того, вы можете работать в системе это должно происходить годами, в этом случае фрагментация памяти является реальной проблемой).
Из-за этого встроенные системы обычно полностью запрещают динамическое выделение памяти.
Конечно, в большинстве программных проектов вам нужна некоторая форма динамической памяти, и в этих случаях вы обычно реализуете свою собственную (т. Е. Имеете некоторый пул памяти, который могут запрашивать все потоки памяти) от и т. д.).
Чтобы проекты C ++ максимально легко использовали это динамическое выделение памяти вручную, я видел новый оператор переопределения проектов, использующий метод выделения проекта.