20.6.9:
void deallocate(pointer p, size_type n);
- 要求:p 应该是从 allocate() 获得的指针值。n 应等于作为第一个参数传递给返回 p 的 allocate 调用的值。
- 效果:释放 p 引用的存储空间。
- 备注:使用 ::operator delete(void*) (18.6.1),但在调用此函数时未指定。
如果n
不等于作为第一个参数传递给返回的 allocate 调用的值,会发生什么p
?不解除分配?扔std::bad_alloc
?...
编辑: 我对“应该发生什么”的真正意思是:在自定义实现中抛出或断言可以吗?