N3485 20.6.9.1 [allocator.members]/1 说:
对分配或解除分配特定存储单元的这些函数的调用应以单个总顺序发生,并且每个此类解除分配调用应在此顺序的下一次分配(如果有)之前发生。
最后一个要求让我感到困惑。看起来标准是说,如果一个人分配了一块内存(我们称之为 block a
),然后分配另一个块(我们称之为 block ),那么在释放 block之前b
不允许释放 block 。a
b
如果这确实是本段所包含的内容,我看不出如何vector
以一种节省空间的方式实现类似 's 的增长;因为无法分配更大的缓冲区,然后释放先前分配的(太小)缓冲区。
这实际上是这一段的意思,还是我误读了这一段?