Вы должны вместо этого сделать:
for ( int = i; i < 3; i++ )
{
delete arrayPtr[i];
}
И вам не следует делать delete[] arrayPtr;
, поскольку вы пытаетесь освободить / удалить стек, выделенный arrayPtr
.
Еще одна вещь, которую следует учитывать, - это использование std::vector
указателей вместо массива. И если вы используете компилятор, который реализует TR1, вы также можете использовать std::vector
из std::tr1::shared_ptr
вместо необработанных указателей, и тогда вам не придется беспокоиться об удалении этих объектов самостоятельно.
Пример:
{
std::vector< std::tr1::shared_ptr<Base> > objects;
for (int i=0; i < 3; ++i)
{
objects.push_back(std::tr1::shared_ptr<Base>(new Derived()));
}
} // here, once "objects" exit scope, all of your Derived objects are nicely deleted