Предыдущий, у меня есть следующий код.Нужно ли указывать нулевой указатель на std :: auto_ptr
double* a[100];
for (int i = 0; i < 100; i++) {
// Initialize.
a[i] = 0;
}
Целью инициализацию массива a
до 0 является то, что, когда я итерационным удалить элемент a
, все будет работать нормально до сих пор даже нет памяти, выделяемой еще для элемента a
.
for (int i = 0; i < 100; i++) {
// Fine.
delete a[i];
}
Теперь я хотел бы воспользоваться функцией auto_ptr, чтобы избежать ручного вызова для удаления.
std::auto_ptr<double> a[100];
for (int i = 0; i < 100; i++) {
// Initialize. Is there any need for me to do so still?
a[i] = std::auto_ptr<double>(0);
}
мне было интересно, есть ли необходимость для меня, чтобы инициализировать auto_ptr
держать нулевой указатель? Я чувствую, что нет. Я просто хочу подтвердить это, чтобы не было никакого улова.
Возможно, вы можете объяснить, почему, по-вашему, вы хотите, чтобы массив указателей удваивался в первую очередь. Изменение этого на массив 'auto_ptr' звучит для меня так, как будто у него нет реальной проблемы. –