C++ object lifetime lab

动态存储 ≠ 活对象

安全地演练 allocator 的四个阶段,并用 vector 对照 size 与 capacity。这里不会执行未定义行为:不合法的动作会被拒绝,并在日志中解释原因。

未分配原始存储槽活对象

allocator 生命周期观察器

allocate → construct → destroy → deallocate,顺序不能跳跃。

存储:未分配size:0capacity:0

异常模拟会先取得新存储;第 N 个对象构造失败后,只逆序销毁前 N−1 个已完成构造的对象,然后归还整块存储。

vector:size / capacity 对比

reserve 只准备空间,push 才创建元素,clear 销毁元素但通常保留容量。

size:0capacity:0重分配:0

当前没有已构造元素。