我想在我的程序中问一个简单的问题,我在制作某种系统,对于动态分配,我正在使用指向这样的指针的数组
Vehicle **temp=new Vehical*[countVehicle];
然后
temp[countVehicle-1]=new Car();
您一定已经了解我正在尝试做的事情。删除内存时出现问题。您能告诉我在这种情况下如何删除内存。
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] 删除。
我来说两句