allocator_base Class

 

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;

See Also

<allocators>