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