Распределитель по умолчанию C ++ - что должно произойти, если размер не равен размеру, переданному при вызове allocate?

20.6.9:

void deallocate(pointer p, size_type n);
  • Требуется: p должно быть значением указателя, полученным от allocate (). N должно быть равно значению, переданному в качестве первого аргумента для вызова allocate, который вернул p.
  • Эффекты: Освобождает память, указанную в стр.
  • Примечания: Используется :: operator delete (void *) (18.6.1), но он не указан при вызове этой функции.

Что должно произойти, если n не совпадает со значением, переданным в качестве первого аргумента при вызове функции allocate, которая вернула p ? Не освободить? Бросить std :: bad_alloc ? ...

РЕДАКТИРОВАТЬ: На самом деле, говоря «что должно произойти», я имел в виду: можно ли бросить или утверждать в специальной реализации?

6
задан Motti 21 July 2011 в 08:51
поделиться