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
? ...
РЕДАКТИРОВАТЬ: Что я на самом деле имел в виду под "что должно произойти": было бы нормально бросать или утверждать в пользовательской реализации?