23 General utilities library [utilities]

23.10 Memory [memory]

23.10.9 The default allocator [default.allocator]

23.10.9.1 allocator members [allocator.members]

За исключением деструктора, функции-члены распределителя по умолчанию не должны вводиться data races в результате одновременных вызовов этих функций-членов из разных потоков. Вызов этих функций, которые выделяют или освобождают конкретную единицу памяти, должны происходить в едином общем порядке, и каждый такой вызов освобождения должен происходить до следующего выделения (если таковое имеется) в этом порядке.

T* allocate(size_t n);

Returns: Указатель на начальный элемент массива хранения размера n * sizeof(T), выровненный соответствующим образом для объектов типа T.

Remarks: хранилище получается путем вызова ​::​operator new, но не указано, когда и как часто вызывается эта функция.

Throws: bad_­alloc если невозможно получить хранилище.

void deallocate(T* p, size_t n);

Requires: p должно быть значением указателя, полученным из allocate(). n должен быть равен значению, переданному в качестве первого аргумента при вызове функции allocate, которая вернулась p.

Effects: Освобождает хранилище, на которое ссылается p .

Remarks: Используется ​::​operator delete, но не указывается при вызове этой функции.