N3485 20.6.9.1 [allocator.members]/1 言います:
ストレージの特定のユニットを割り当てまたは割り当て解除するこれらの関数の呼び出しは、1 つの合計順序で発生し、そのような割り当て解除呼び出しはそれぞれ、この順序で次の割り当て (存在する場合) の前に発生します。
この最後の要件は私を混乱させます。標準では、メモリのブロックを割り当て ( block と呼びましょうa
)、別のブロックを割り当てた場合 ( block と呼びましょう)、 block の割り当てが解除されるまでb
block の割り当てを解除することは許可されていないようです。a
b
vector
これが実際にこの段落が意味するものである場合、スペース効率の良い方法で成長する のようなものを実装する方法がわかりません。これは、より大きなバッファーを割り当ててから、以前に割り当てられた (小さすぎる) バッファーの割り当てを解除することができなかったためです。
これは実際にこの段落が意味することですか、それともこのセクションを誤解していますか?