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
?...
編集: 「何が起こるべきか」で私が実際に意味したのは、カスタム実装でスローまたはアサートしても問題ないでしょうか?