free(NULL)
との両方::operator delete(NULL)
が許可されます。アロケータの概念 (例: std::allocator も許可deallocate(NULL,1)
されていますか、それとも独自のガードを配置する必要がありますか?
1 に答える
10
独自のチェックを追加する必要があります。
§20.4. 1.1/8 によると、以下deallocate
が必要です。
p は、allocate() から取得したポインター値でなければなりません。n は、p を返した allocate の呼び出しに最初の引数として渡された値と等しくなければなりません。
allocate
ストレージを指定できない場合に例外をスローします (§20.4. 1.1/7)。つまり、allocate
決して 0 を返さdeallocate
ないため、0 を取得するべきではありません。0 を渡すと、未定義の動作が発生します。
于 2010-06-23T18:50:30.917 に答える