Вы смущены. std::allocator
вызовы/использование new
и delete
. Это - просто другой уровень в иерархии памяти C++, используемой для удовлетворения различных потребностей библиотеки стандарта C++, особенно контейнеры, но другие типы также. Контейнеры библиотеки C++ используют средство выделения для автоматического управления памятью содержавших элементов. Без него вещи были бы более громоздкими и таким образом более трудными использовать. Кроме того, средство выделения может использоваться для выполнения различных методов управления памятью, например, выделения стека, линейного выделения, выделения "кучи", выделения пула и т.д.
память C++ "иерархия"
_________________
|Applications |
|_______________|
|
______↓_______________________
|C++ library (std::allocator)|
|____________________________|
|
______↓______________________________________________________________________________
|C++ primitives (new/delete, new[]/delete[], ::operator new()/::operator delete()) |
|___________________________________________________________________________________|
|
______↓______
|malloc/free|
|___________|
|
______↓______________
|OS APIs, syscalls |
|___________________|
, Это - нормальный поток вызовов, но приложение может вместо этого назвать malloc/free, или новый/удаляющий или даже API ОС непосредственно. Вы видите, что это - ВЕСЬ абстракция. Уровень выше кратких обзоров более трудная природа той и переносит его в более легкое для использования пакета.