The latest version of this topic can be found at allocator_base Class.
Defines the base class and common functions needed to create a user-defined allocator from a synchronization filter.
Syntax
template <class Type, class Sync>
class allocator_base
Parameters
| Parameter | Description |
|---|---|
Type |
The type of elements allocated by the allocator. |
Sync |
The synchronization policy for the allocator, which is sync_none Class, sync_per_container Class, sync_per_thread Class, or sync_shared Class. |
Constructors
| allocator_base | Constructs an object of type allocator_base. |
TypeDefs
| const_pointer | A type that provides a constant pointer to the type of object managed by the allocator. |
| const_reference | A type that provides a constant reference to type of object managed by the allocator. |
| difference_type | A signed integral type that can represent the difference between values of pointers to the type of object managed by the allocator. |
| pointer | A type that provides a pointer to the type of object managed by the allocator. |
| reference | A type that provides a reference to the type of object managed by the allocator. |
| size_type | An unsigned integral type that can represent the length of any sequence that an object of template class allocator_base can allocate. |
| value_type | A type that is managed by the allocator. |
Member Functions
| _Charalloc | Allocates storage for an array of type char. |
| _Chardealloc | Frees storage for the array containing elements of type char. |
| address | Finds the address of an object whose value is specified. |
| allocate | Allocates a block of memory large enough to store at least some specified number of elements. |
| construct | Constructs a specific type of object at a specified address that is initialized with a specified value. |
| deallocate | Frees a specified number of objects from storage beginning at a specified position. |
| destroy | Calls an objects destructor without deallocating the memory where the object was stored. |
| max_size | Returns the number of elements of type Type that could be allocated by an object of class allocator before the free memory is used up. |
Requirements
Header: <allocators>
Namespace: stdext
allocator_base::_Charalloc
Allocates storage for an array of type char.
char *_Charalloc(size_type count);
Parameters
| Parameter | Description |
|---|---|
count |
The number of elements in the array to be allocated. |
Return Value
A pointer to the allocated object.
Remarks
This member function is used by containers when compiled with a compiler that cannot compile rebind. It implements _Charalloc for the user-defined allocator by returning the result of a call to the allocate function of the synchronization filter.
allocator_base::_Chardealloc
Frees storage for the array containing elements of type char.
void _Chardealloc(void* ptr, size_type count);
Parameters
| Parameter | Description |
|---|---|
ptr |
A pointer to the first object to be deallocated from storage. |
count |
The number of objects to be deallocated from storage. |
Remarks
This member function is used by containers when compiled with a compiler that cannot compile rebind. It implements _Chardealloc for the user-defined allocator by calling the deallocate function of the synchronization filter. The pointer ptr must have been earlier returned by a call to _Charalloc for an allocator object that compares equal to *this, allocating an array object of the same size and type. _Chardealloc never throws an exception.
allocator_base::address
Finds the address of an object whose value is specified.
pointer address(reference val);
const_pointer address(const_reference val);
Parameters
val
The const or nonconst value of the object whose address is being searched for.
Return Value
A const or nonconst pointer to the object found of, respectively, const or nonconst value.
Remarks
This member function is implemented for the user-defined allocator by returning &val.
allocator_base::allocate
Allocates a block of memory large enough to store at least some specified number of elements.
template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);
pointer allocate(size_type _Nx);
Parameters
| Parameter | Description |
|---|---|
_Nx |
The number of elements in the array to be allocated. |
_Hint |
This parameter is ignored. |
Return Value
A pointer to the allocated object.
Remarks
The member function implements memory allocation for the user-defined allocator by returning the result of a call to the allocate function of the synchronization filter of type Type * if _Nx == 1, otherwise by returning the result of a call to operator new(_Nx * sizeof(Type)) cast to type Type *.
allocator_base::allocator_base
Constructs an object of type allocator_base.
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
Parameters
| Parameter | Description |
|---|---|
right |
The allocator object to be copied. |
Remarks
The first constructor constructs an allocator_base instance. The second constructor constructs an allocator_base instance such that for any allocator_base<Type, _Sync> instance a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.
allocator_base::const_pointer
A type that provides a constant pointer to the type of object managed by the allocator.
typedef const Type *const_pointer;
allocator_base::const_reference
A type that provides a constant reference to type of object managed by the allocator.
typedef const Type& const_reference;
allocator_base::construct
Constructs a specific type of object at a specified address that is initialized with a specified value.
void construct(pointer ptr, const Type& val);
Parameters
| Parameter | Description |
|---|---|
ptr |
A pointer to the location where the object is to be constructed. |
val |
The value with which the object being constructed is to be initialized. |
Remarks
This member function is implemented for the user-defined allocator by calling new((void*)ptr Type(val).
allocator_base::deallocate
Frees a specified number of objects from storage beginning at a specified position.
void deallocate(pointer ptr, size_type _Nx);
Parameters
| Parameter | Description |
|---|---|
ptr |
A pointer to the first object to be deallocated from storage. |
_Nx |
The number of objects to be deallocated from storage. |
Remarks
This member function is implemented for the user-defined allocator by calling deallocate(ptr) on the synchronization filter Sync if _Nx == 1, otherwise by calling operator delete(_Nx * ptr).
allocator_base::destroy
Calls an objects destructor without deallocating the memory where the object was stored.
void destroy(pointer ptr);
Parameters
| Parameter | Description |
|---|---|
ptr |
A pointer designating the address of the object to be destroyed. |
Remarks
This member function is implemented for the user-defined allocator by calling ptr->~Type().
allocator_base::difference_type
A signed integral type that can represent the difference between values of pointers to the type of object managed by the allocator.
typedef std::ptrdiff_t difference_type;
allocator_base::max_size
Returns the number of elements of type Type that could be allocated by an object of class allocator before the free memory is used up.
size_type max_size() const;
Return Value
The number of elements that could be allocated.
Remarks
This member function is implemented for the user-defined allocator by returning (size_t)-1 / sizeof(Type) if 0 < (size_t)-1 / sizeof(Type), otherwise 1.
allocator_base::pointer
A type that provides a pointer to the type of object managed by the allocator.
typedef Type *pointer;
allocator_base::reference
A type that provides a reference to the type of object managed by the allocator.
typedef Type& reference;
allocator_base::size_type
An unsigned integral type that can represent the length of any sequence that an object of template class allocator_base can allocate.
typedef std::size_t size_type;
allocator_base::value_type
A type that is managed by the allocator.
typedef Type value_type;