Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определяет базовый класс и общие функции, необходимые для создания определяемого пользователем распределителя из фильтра синхронизации.
Синтаксис
template <class Type, class Sync>
class allocator_base
Параметры
Тип
Тип элементов, распределяемых распределителем.
Синхронизация
Политика синхронизации распределителя: класс sync_none, класс sync_per_container, класс sync_per_thread или класс sync_shared.
Конструкторы
| Конструктор | Description |
|---|---|
| allocator_base | Создает объект типа allocator_base. |
Определения типов
| Введите имя | Description |
|---|---|
| const_pointer | Тип, предоставляющий постоянный указатель на тип объекта, управляемого распределителем. |
| const_reference | Тип, предоставляющий постоянную ссылку на тип объекта, управляемого распределителем. |
| difference_type | Тип целого числа со знаком, который может представлять разницу между значениями указателей на тип объекта, управляемого распределителем. |
| pointer | Тип, предоставляющий указатель на тип объекта, управляемого распределителем. |
| reference | Тип, предоставляющий ссылку на тип объекта, управляемого распределителем. |
| size_type | Неподписанный целочисленный тип, который может представлять длину любой последовательности, которую может выделить объект типа allocator_base . |
| value_type | Тип, управляемый распределителем. |
Функции элементов
| Функция-член | Description |
|---|---|
| _Charalloc | Выделяет память для массива типа char. |
| _Chardealloc | Освобождает хранилище для массива, содержащего элементы типа char. |
| address | Находит адрес объекта, значение которого задано. |
| allocate | Выделяет блок памяти, достаточный для хранения по крайней мере некоторого указанного числа элементов. |
| construct | Создает определенный тип объекта по указанному адресу, инициализированный с использованием заданного значения. |
| deallocate | Освобождает указанное число объектов из памяти, начиная с заданной позиции. |
| destroy | Вызывает деструктор объектов без освобождения памяти, в которой хранился объект. |
| max_size | Возвращает количество элементов типа Type, которые могут быть выделены объектом класса allocator в пределах имеющейся свободной памяти. |
Требования
Заголовок:<распределители>
Пространство имен: stdext
allocator_base::_Charalloc
Выделяет память для массива типа char.
char *_Charalloc(size_type count);
Параметры
count
Число выделяемых элементов в массиве.
Возвращаемое значение
Указатель на выделяемый объект.
Замечания
Эта функция-член используется контейнерами при компиляции с компилятором, который не может скомпилировать повторную привязку. Она реализует _Charalloc для пользовательского распределителя, возвращая результат вызова функции allocate фильтра синхронизации.
allocator_base::_Chardealloc
Освобождает хранилище для массива, содержащего элементы типа char.
void _Chardealloc(void* ptr, size_type count);
Параметры
ptr
Указатель на первый объект, который необходимо освободить из хранилища.
count
Количество объектов для освобождения из хранилища.
Замечания
Эта функция-член используется контейнерами при компиляции с компилятором, который не может скомпилировать повторную привязку. Она реализует _Chardealloc для пользовательского распределителя путем вызова функции deallocate фильтра синхронизации. Указатель ptr должен быть возвращен ранее путем вызова _Charallocallocator, который сравнивает его с *this, выделяя объект массива того же типа и размера. _Chardealloc никогда не создает исключений.
allocator_base::address
Находит адрес объекта, значение которого задано.
pointer address(reference val);
const_pointer address(const_reference val);
Параметры
Val
Константное или неконстантное значение объекта, адрес которого ищется.
Возвращаемое значение
Константный или неконстантный указатель на найденный объект соответственно константного или неконстантного значения.
Замечания
Эта функция-член реализуется для пользовательского распределителя путем возврата &val.
allocator_base::allocate
Выделяет блок памяти, достаточный для хранения по крайней мере некоторого указанного числа элементов.
template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);
pointer allocate(size_type _Nx);
Параметры
_Nx
Число выделяемых элементов в массиве.
_Hint
Этот параметр не учитывается.
Возвращаемое значение
Указатель на выделяемый объект.
Замечания
Эта функция-член реализует выделение памяти для пользовательского распределителя путем возврата результата вызова функции allocate фильтра синхронизации типа Type *, если _Nx == 1, в противном случае — путем возврата результата вызова приведения operator new(_Nx * sizeof(Type)) к типу Type *.
allocator_base::allocator_base
Создает объект типа allocator_base.
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
Параметры
right
Объект allocator для копирования.
Замечания
Первый конструктор создает экземпляр allocator_base. Второй конструктор создает экземпляр allocator_base так, что для любого экземпляра allocator_base<Type, _Sync>a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.
allocator_base::const_pointer
Тип, предоставляющий постоянный указатель на тип объекта, управляемого распределителем.
typedef const Type *const_pointer;
allocator_base::const_reference
Тип, предоставляющий постоянную ссылку на тип объекта, управляемого распределителем.
typedef const Type& const_reference;
allocator_base::construct
Создает определенный тип объекта по указанному адресу, инициализированный с использованием заданного значения.
void construct(pointer ptr, const Type& val);
Параметры
ptr
Указатель места, в котором должен создаваться объект.
Val
Значение, с которым создаваемый объект будет инициализирован.
Замечания
Эта функция-член реализуется для пользовательского распределителя путем вызова new((void*)ptr Type(val).
allocator_base::d eallocate
Освобождает указанное число объектов из памяти, начиная с заданной позиции.
void deallocate(pointer ptr, size_type _Nx);
Параметры
ptr
Указатель на первый объект, который необходимо освободить из хранилища.
_Nx
Количество объектов для освобождения из хранилища.
Замечания
Эта функция-член реализуется для пользовательского распределителя путем вызова deallocate(ptr) в фильтре синхронизации Sync, если _Nx == 1, в противном случае — путем вызова operator delete(_Nx * ptr).
allocator_base::d e
Вызывает деструктор объектов без освобождения памяти, в которой хранился объект.
void destroy(pointer ptr);
Параметры
ptr
Указатель, обозначающий адрес уничтожаемого объекта.
Замечания
Эта функция-член реализуется для пользовательского распределителя путем вызова ptr->~Type().
allocator_base::d ifference_type
Тип целого числа со знаком, который может представлять разницу между значениями указателей на тип объекта, управляемого распределителем.
typedef std::ptrdiff_t difference_type;
allocator_base::max_size
Возвращает количество элементов типа Type, которые могут быть выделены объектом класса в пределах имеющейся свободной памяти.
size_type max_size() const;
Возвращаемое значение
Количество элементов, которые могут быть выделены.
Замечания
Эта функция-член реализуется для пользовательского распределителя путем возврата (size_t)-1 / sizeof(Type), если 0 < (size_t)-1 / sizeof(Type)в противном случае — 1.
allocator_base::p ointer
Тип, предоставляющий указатель на тип объекта, управляемого распределителем.
typedef Type *pointer;
allocator_base::reference
Тип, предоставляющий ссылку на тип объекта, управляемого распределителем.
typedef Type& reference;
allocator_base::size_type
Неподписанный целочисленный тип, который может представлять длину любой последовательности, которую может выделить объект типа allocator_base .
typedef std::size_t size_type;
allocator_base::value_type
Тип, управляемый распределителем.
typedef Type value_type;