Что за зверь - Allocator?

258
24 февраля 2018, 21:57

Прошу, помогите с пониманием аллокаторов в c++.

Заметил, что vector можно создавать, используя некий "аллокатор". Задался вопросом, пошёл в интернет. Но по запросам, которые, казалось бы, должны давать ответ, я получил лишь сухие статьи, а стаковерфлоу показывает мне вопросы типа "как написать аллокатор" и т.д.

Все, что я понял - это то, что аллокатор используется для управления памятью. Можно написать свой, который будет управлять ей как-то по-умному.

А в чем тогда суть? Что, я могу, к примеру, написать аллокатор, который будет выделять память не последовательно, а кусочками в разных уголках памяти? И если я создам вектор с таким аллокатором, то почему в справке по контейнеру vector написано, что, мол, он хранит все данные последовательно и непрерывно в памяти? Или я чего-то не понимаю? Единственное, что я, кажется, понял - так это то, что стандартный аллокатор выделяет память через оператор new, используя стандартный конструктор, что "не особо эффективно, учитывая, что не всегда нужно инициализировать все объекты, под которые мы выделяем место".

Так для чего же на самом деле нужны аллокаторы? Можно объяснить как-то кратко и на пальцах, почему и зачем?

READ ALSO
Извлечение строки из адреса

Извлечение строки из адреса

Есть ли программный способ (C/C++ или ассемблер) извлечь строку кода из адреса во время работы программы? Что-то вроде команды disassemble [Address] в gdb

260
Неиспользуемые переменные

Неиспользуемые переменные

Доброго времени суток!

199
Win10 Virtual desktop в отдельном окне

Win10 Virtual desktop в отдельном окне

Есть ли способ отобразить созданный рабочий стол(win+tab->создать раб стол) в масштабируемом окнеЦель - создать приложение в котором будет второй...

196
visual C++ и Linux? Оно надо или забить? [требует правки]

visual C++ и Linux? Оно надо или забить? [требует правки]

В общем до поступления осталось еще пару месяцев и я думаю - может освоить visual C++Вроде как С++ нативный для Linux

180