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