Vector的new与delete问题
先看一段代码:
struct A;
vector<A> A_vect(5);
for(int i = 0; i < 5; i++)
{
A* pA = new A;
A_vect.pushback(*pA);
}
vector<A>::iterator it_A = A_vect.end()-1;
for(; it_A != A_vect.begin(); it_A--)
{
A_vect.popback( );
}
上面的代码肯定产生内存泄露,new和delete对称使用,特别是使用的位置.你外面new,就不要指望它内部delete,new和delete永不分离。
vector::push_back会调用元素的copy constructor,也就是说,你放进vector的那一个,不是你new的那一个。注意这时候还要定义元素的copy constructor,不然也不对哦。
vector可以帮助你自动构造和析构,但是,自己分配和构造的对象必须自己析构和释放。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· 记一次 .NET某固高运动卡测试 卡慢分析
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题