
在C++中,清空容器并释放其所占用的内存是一个常见的需求,尤其是在处理大量数据后希望回收资源时。虽然 clear() 函数可以清空容器内容,但它并不一定立即释放内存。本文介绍如何真正释放容器内存,包括使用 clear() 和结合 swap 技巧的方法。
clear() 函数的作用与局限
clear() 是标准容器(如 vector、list、deque 等)提供的成员函数,用于移除所有元素,使容器变为空。
- 调用后,容器的 size() 变为 0,但 capacity() 通常保持不变。
- 这意味着底层内存空间可能仍被保留,以备后续插入操作复用。
- 对于 vector 来说,这可能导致内存未真正归还给系统。
示例:
std::vector<int> vec(1000000); vec.clear(); // 元素被清除,但内存可能未释放
登录后复制
使用 swap 技巧强制释放内存
为了真正释放 vector 占用的内存,可以使用“匿名 swap”技巧:
立即学习“C++免费学习笔记(深入)”;
- 创建一个空容器,并与原容器交换内容。
- 交换后,原容器变为空且容量为 0,而临时容器持有旧内存,在离开作用域时自动析构并释放内存。
标准写法:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~