C++如何清空vector内存_C++ swap技巧彻底释放vector空间

admin 百科 15
clear()不释放内存因只清空元素不改变容量;2. vector为效率采用预分配策略保留空间;3. 用swap技巧可彻底释放内存。

C++如何清空vector内存_C++ swap技巧彻底释放vector空间-第1张图片-佛山资讯网

在C++中,vector 是使用频率最高的容器之一。虽然它会自动管理内存,但在某些场景下,比如处理大量数据后希望立即释放内存,你会发现调用 clear() 并不能真正归还内存给系统。这是因为 clear() 只删除元素,并不改变底层缓冲区的容量(capacity)。要彻底释放 vector 占用的内存,可以使用一个经典技巧——swap 空容器

为什么 clear() 无法释放内存?

vector 的设计为了效率,采用了“空间预分配”策略。当你添加元素时,容量会动态增长;而调用 clear() 时,只清空元素个数(size 变为 0),但 capacity 保持不变,意味着内存依然被保留。

例如:

vector v(1000);
v.clear();
cout

此时内存并未归还系统。

立即学习“C++免费学习笔记(深入)”;

使用 swap 技巧释放内存

最常用且标准的方法是创建一个空 vector,并与原 vector 交换内容:

vector v(1000);
// ... 使用后需要释放
vector().swap(v);

这行代码做了三件事:

标签: c++ 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~