Задать вопрос
@NikHaker
/

Для чего нужны и что делают аллокаторы в С++?

После прохождения одного курса, пытаюсь понять что такое и для чего же они нужны, эти аллокаторы в С++. Обьясните, пожалуйста их практическое назначение и что они должны делать.
  • Вопрос задан
  • 14036 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Аллокатор умеет выделять и освобождать память в требуемых количествах определённым образом. std::allocator -- пример реализации аллокатора из стандартной библиотеки, просто использует new и delete, которые обычно обращаются к системным вызовам malloc и free.

Более сложный пример -- pool allocator. Раз системные вызовы дороги, почему бы на них не сэкономить? Выделим сразу 1 гигабайт памяти (к примеру), а дальше в аллокаторе будем выдавать память из этого пула и увеличивать указатель head (опять же, упрощенно). Реальное выделение памяти только одно, системных вызовов почти нет, ура-ура, программа ускорилась.

Собственно, для этого и нужны аллокаторы, чтобы вставлять свое, крутое, нестандартное, выделение памяти в любое место. Большинство стандартных контейнеров их принимают.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@SolidMinus
На хабре есть целый ряд шикарных и понятных статей, например эта:

Альтернативные аллокаторы памяти
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Очень коротко - для производительности.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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