WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

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

Описание

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

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

Синтаксис

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

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

Примечания

  1. Остерн, 2004, Аллокаторы, с. 96.
  2. G. Andreas, F. Masur Allocators (STL) www.codeguru.com, 2004
  3. Остерн, 2004, Аллокатор, с. 176—177.
  4. Остерн, 2004, Аллокатор, с. 178.
  5. Джосьютис, 2004, Использование распределителей в прикладном программировании, с. 701—702.

Источники

  • Н. Джосьютис. 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.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии