Vec · 内存工作台
箱子没装满,不等于仓库没占地
往 Vec 里连续推入数据,盯住 len、capacity 和“搬家次数”。你会看见性能成本究竟发生在哪一步。
当前连续内存
0len · 已初始化元素
0capacity · 可容纳元素
0重新分配次数
还没有分配堆内存。第一次
push 会申请空间。先分清三件事
len 是现在能安全读取的元素数;capacity 是不重新分配时最多能放多少个元素;pop 和 clear 通常只降低长度,不会自动归还那块内存。
这个沙盘刻意简化了什么
为了看清因果,沙盘在空间不足时按“至少翻倍”扩容。真实 Rust 标准库不承诺固定增长倍率;不要让业务逻辑依赖某次 push 后的精确 capacity。