61
задан 12 July 2015 в 21:42

1 ответ

Вы смущены. 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 ОС непосредственно. Вы видите, что это - ВЕСЬ абстракция. Уровень выше кратких обзоров более трудная природа той и переносит его в более легкое для использования пакета.

0
ответ дан 31 October 2019 в 15:33

Другие вопросы по тегам:

Похожие вопросы: