23 General utilities library [utilities]
Except for the destructor, member functions of the default allocator shall not introduce
as a result of concurrent calls to those member
functions from different threads.
Calls to these functions that allocate or deallocate a
particular unit of storage shall occur in a single total order, and each such
deallocation call shall happen before the next allocation (if any) in this order.
T* allocate(size_t n);
A pointer to the initial element of an array of storage of size n
, aligned appropriately for objects of type T.
the storage is obtained by calling ::operator new
but it is unspecified when or how often this
function is called.
if the storage cannot be obtained.
void deallocate(T* p, size_t n);
shall be a pointer value obtained from allocate().
shall equal the value passed as the first argument
to the invocation of allocate which returned p.
Deallocates the storage referenced by p .