删除指向对象的指针的指针数组

用户名

我想在我的程序中问一个简单的问题,我在制作某种系统,对于动态分配,我正在使用指向这样的指针的数组

Vehicle **temp=new Vehical*[countVehicle];

然后

temp[countVehicle-1]=new Car();

您一定已经了解我正在尝试做的事情。删除内存时出现问题。您能告诉我在这种情况下如何删除内存。

4个
for ( int i = 0; i < countVehicle; ++i)
{
    delete temp[i];  // assert destructor is virtual!
}
delete[] temp;

确保将基类中的析构函数Vehicle声明为虚拟的,以便在通过基类指针删除对象时调用正确的析构函数,如上例所示。

class Vehicle {
public:
    //...
    virtual ~Vehicle() {}
};

但是,您应该考虑使用std::vector智能指针,例如

{
  std::vector< boost::shared_ptr<Vehicle> > v;
  v.push_back( boost::shared_ptr<Vehicle>( new Car()));
  v[0]->run(); // or whatever your Vehicle can do
  //...
} // << When v goes out of scope the memory is automatically deallocated.

这将简化内存管理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章