Русская Википедия:Аллокатор
Шаблон:Содержание справа Аллокатор (Шаблон:Lang-en) или распределитель памяти в языке программирования C++ — специализированный класс, реализующий и инкапсулирующий малозначимые (с прикладной точки зрения) детали распределения и освобождения ресурсов компьютерной памяти.
Описание
Все классы стандартной библиотеки шаблонов STL управляют памятью с помощью встроенных аллокаторов. Явное задание аллокатора не является обязательным требованием классов-контейнеров библиотеки, однако их можно передавать в конструкторы в качестве параметров шаблонаШаблон:Sfn. Причиной внедрения в библиотеку STL механизма аллокаторов стала необходимость абстрагироваться при проектировании шаблонов от ограничений модели памяти вычислительной техники[1].
В дополнение к этому, многие стандартные библиотечные классы снабжены возможностью подключать пользовательские реализации аллокаторов вместо системных. Отмечается, что стандартные аллокаторы часто основаны на использовании неформализованных языковых тонкостей и поэтому они вызывают наибольшее количество проблем при обеспечении кроссплатформенной переносимости кодаШаблон:Sfn.
Синтаксис
Тип значения аллокатора определяет тип того объекта, под хранения которого выделяется память. Если данным типом является T
, то вызов функции-члена allocate(n)
позволяет сформировать запрос на выделение пространства в машинной памяти для хранения n
объектов типа T
Шаблон:Sfn.
После объявления и выделения памяти объекты с нестандартным аллокатором не отличаются от остальных объектов, однако смешивать их друг с другом настоятельно не рекомендуется из-за непредсказуемых последствий. Для идентификации объектов с разными типами распределения памяти можно пользоваться стандартными функциями доступа к аллокаторам get_allocator()
в комбинации с операцией сравнения ==
Шаблон:Sfn.
Примечания
Источники
- ↑ G. Andreas, F. Masur Allocators (STL) Шаблон:Wayback www.codeguru.com, 2004