Правильное уничтожение указателей на объекты
Я хотел бы задать пару быстрых вопросов о правильном уничтожении указателей int и векторных указателей. Во-первых, я видел, как в прошлом люди спрашивали об этих типах проблем, и почти всегда есть несколько ответов о том, как использование векторных указателей, указателей на объекты и т. Д. В C ++ не является хорошей стандартной практикой кодирования c ++, и что вы должны создать экземпляр копия объекта. Это может быть правдой, но вы не всегда имеете контроль над парадигмами, которые были заложены до вашего приезда. Парадигма, в которой я должен работать, требует инициализации указателей практически на все. Очень похожий на Java подход к C ++. Одна из основных причин, по которой мы это делаем, заключается в том, что наши наборы данных настолько велики, что выделение стека может быть переполнено.
Мои вопросы:
Если у меня есть указатель на массив int32_t, как правильно его уничтожить в деструкторе?
Примечание. Наша практика заключается в установке любого указателя на NULL в конструкторе.
I initialize it as a member variable.
int32_t *myArray_;
When I use it in a method, I would:
this->myArray = new int32_t[50];
To delete it in the method I would call delete on the array:
delete [] this->myArray;
What is the proper call in the destructor?
~MyDestructor(){
delete this->myArray_;
or delete [] this->myArray_;
}
У меня тот же вопрос о векторных указателях:
I initialize it as a member variable.
std::vector *myVector_;
When I use it in a method, I would:
this->myVector_ = new std::vector();
//pushback some objects
To delete the vector in the method I would iterate the vector and delete its objects, then delete the vector;
for(std::vector::iterator itr = this->myVector_->begin();
its != this->myVector->end(); ++ itr){
delete (*itr);
}
delete this->myVector_;
What would be the proper way to clean it up in the destructor?
would I just delete the vector?
delete this->myVector;
or do I need to iterate the entire vector again?
Спасибо заранее за любые советы.