class Unit
{
public:
Unit();
Unit(int id);
~Unit();
private:
int id = -1;
};
Unit::Unit()
{
}
Unit::Unit(int _id) :id(_id){
printf("Unit construction. id=%d\n", id);
}
Unit::~Unit()
{
printf("Unit destruction. id=%d\n", id);
}
1、如果容器中保存了对象指针,则要在清除容器前手动删除指针,否则就会内存泄露。
std::vector<Unit*> units;
units.reserve(100);
for (int i=0;i<3;++i)
{
units.push_back(new Unit(i));
}
for (Unit* ptr:units)
{
delete ptr;
ptr = nullptr;
}
2、如果容器中保存了对象,存在多次复制的问题。建议存储指针。

本文探讨了C++中如何正确管理内存,特别是在使用容器如std::vector时,避免内存泄漏和对象复制问题。通过实例展示了对象指针的生命周期管理和使用智能指针等现代C++特性的重要性。
4万+

被折叠的 条评论
为什么被折叠?



