Как аллоцировать память с помощью своего аллокатора?

Как аллоцировать память с помощью своего аллокатора ? Можно ли как то передать свой аллокатор в New?


Ответы (1 шт):

Автор решения: HolyBlackCat

Как аллоцировать память с помощью своего аллокатора?

Вызовом его метода .allocate() или .construct().

если мы создаем std::map<int, string> test, то аллокатор по умолчанию для него std::allocator<std::pair<int, string>. Предположим, с помощью этого аллокатора выделяется память для пар ключ - значение, т.е allocator.alocate(), но каким образом память выделяется для нод, содержащих эти пары? Ведь переданные алокатор имеет тип std::allocator<std::pair<int, string>

Тип аллокатора - std::allocator<std::pair<const int, string>>, это во-первых.

Предполагаю, что аллокатор этого типа вообще не используется, и заменяется другим аллокатором, тип которого определяется через std::allocator_traits<...>::rebind_alloc<...>. В rebind скорее всего передается тип ноды, а пары лежат прямо внутри нод, а не аллоцируются отдельно.

→ Ссылка