Аллокатор (англ. Allocator) или распределитель памяти в языке программирования C++ — специализированный класс, реализующий и инкапсулирующий малозначимые (с прикладной точки зрения) детали распределения и освобождения ресурсов компьютерной памяти.

Описание

Все классы стандартной библиотеки шаблонов STL управляют памятью с помощью встроенных аллокаторов. Явное задание аллокатора не является обязательным требованием классов-контейнеров библиотеки, однако их можно передавать в конструкторы в качестве параметров шаблона[1]. Причиной внедрения в библиотеку STL механизма аллокаторов стала необходимость абстрагироваться при проектировании шаблонов от ограничений модели памяти вычислительной техники[2].

В дополнение к этому, многие стандартные библиотечные классы снабжены возможностью подключать пользовательские реализации аллокаторов вместо системных. Отмечается, что стандартные аллокаторы часто основаны на использовании неформализованных языковых тонкостей и поэтому они вызывают наибольшее количество проблем при обеспечении кроссплатформенной переносимости кода[3].

Синтаксис

Тип значения аллокатора определяет тип того объекта, под хранения которого выделяется память. Если данным типом является T, то вызов функции-члена allocate(n) позволяет сформировать запрос на выделение пространства в машинной памяти для хранения n объектов типа T[4].

После объявления и выделения памяти объекты с нестандартным аллокатором не отличаются от остальных объектов, однако смешивать их друг с другом настоятельно не рекомендуется из-за непредсказуемых последствий. Для идентификации объектов с разными типами распределения памяти можно пользоваться стандартными функциями доступа к аллокаторам get_allocator() в комбинации с операцией сравнения ==[5].

Примечания

Источники

  • Н. Джосьютис. C++. Стандартная библиотека. Для профессионалов = The C++ Standard Library. — СПб. : Питер, 2004. — 730 с. — ISBN 5-94723-635-4.
  • М. Остерн. Обобщённое программирование и STL. Использование и наращивание стандартной библиотеки C++ = Generic Programming and the STL: Using and Extending the C++ Standard Template Library. — СПб. : Невский Диалект, 2004. — 544 с. — ISBN 0-201-30956-4.
🔥 Top keywords: Заглавная страницаЯндексДуров, Павел ВалерьевичСлужебная:ПоискYouTubeЛунин, Андрей АлексеевичПодносова, Ирина ЛеонидовнаВКонтактеФоллаут (телесериал)WildberriesTelegramРеал Мадрид (футбольный клуб)Богуславская, Зоя БорисовнаДуров, Валерий СемёновичРоссияXVideosСписок умерших в 2024 годуЧикатило, Андрей РомановичFallout (серия игр)Список игроков НХЛ, забросивших 500 и более шайбПопков, Михаил ВикторовичOzon17 апреляИльин, Иван АлександровичMail.ruСёгун (мини-сериал, 2024)Слово пацана. Кровь на асфальтеПутин, Владимир ВладимировичЛига чемпионов УЕФАГагарина, Елена ЮрьевнаБишимбаев, Куандык ВалихановичЛига чемпионов УЕФА 2023/2024Турнир претендентов по шахматам 2024Манчестер СитиMGM-140 ATACMSРоссийский миротворческий контингент в Нагорном КарабахеЗагоризонтный радиолокаторПинапВодительское удостоверение в Российской Федерации