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
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
Constructor | Description |
---|---|
allocator_base | Constructs an object of type allocator_base . |
Typedefs
Type name | Description |
---|---|
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 type allocator_base can allocate. |
value_type | A type that is managed by the allocator. |
Member functions
Member function | Description |
---|---|
_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
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 can't 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
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 can't 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
_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
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
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
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
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 type 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;