Это очень специализированный оптимизированный вариант для видеоигр (в основном встроенная система). Мы использовали их для поведения данных загрузки на месте в наших видеоиграх, чтобы ускорить загрузку (и избежать фрагментации).
По сути, мы будем создавать объекты на стороне консоли (Playstation) в компьютере. Затем, чтобы уменьшить перегрузку фрагментации, мы должны упаковать объекты данных в непрерывный буфер с одним выделением. Ссылки на объекты данных в этом буфере будут затем изменены для вычитания базы из указателей в смещения (вызов unix - у нас также были виртуальные вызовы исправления / отмены, которые брали базу буфера и могли преобразовывать между смещениями и указателями).
Когда мы загружали данные, они загружались в один большой блок. Все данные, на которые ссылается корень, были вне корневого объекта. Мы могли бы сделать в корне «новое» на месте, которое инициализировало бы правильные таблицы VF для объекта и исправляло бы все присоединенные блоки (выполняя новые на месте и затем исправляя присоединенные блоки соответственно).
Нам понадобились конструкторы, вызванные (вместо новых), чтобы генерировать правильные таблицы VF в объектах. Однако если бы указатели были автоматически очищены до NULL во время конструктора, мы бы потеряли данные о смещении и не смогли бы воссоздать указатели между объектами в непрерывном блоке.
FWIW, это распространенная техника в мире видеоигр. Эта статья Gamasutra (не написанная мной или моими коллегами) подробно объясняет то же самое, что они делали в другой компании:
Также эта тема обсуждения на SourceForge .
Было даже несколько выступлений GDC ( Game Developer Conference ) на эту тему.
Поиск в Google «загрузки на месте» даст много других примеров людей, использующих эту технику, для которой в основном требуются неинициализированные указатели.
ПРИМЕЧАНИЕ. В настоящее время это единственный ответ, который фактически отвечает на заданный вопрос («Используются ли неинициализированные указатели в C или C ++?»), Давая конкретное использование указателям, которые должны оставаться унифицированными.
Все остальные ответы являются лучшими ответами на исходный вопрос, на который ссылается («[C ++] Почему указатели не инициализируются с NULL по умолчанию?»), Из-за которого постер задал этот вопрос.