int ポインターとベクター ポインターの適切な破棄についていくつか簡単な質問をしたいと思います。まず、私は過去に人々がこの種の問題について尋ねるのを見たことがあります。ほとんどの場合、C++ でベクトル ポインター、オブジェクトへのポインターなどを使用することは、標準的な C++ コーディングの実践として適切ではなく、オブジェクトのコピー。それは本当かもしれませんが、到着前に敷設されたパラダイムを常に制御できるとは限りません。私が取り組む必要があるパラダイムでは、ほとんどすべてへのポインタを初期化する必要があります。C++ への非常に Java に似たアプローチ。これを行う主な理由の 1 つは、データ セットが非常に大きいため、スタック割り当てがオーバーフローしやすいためです。
私の質問:
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<MyObject*> *myVector_;
When I use it in a method, I would:
this->myVector_ = new std::vector<MyObject*>();
//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<MyObject*>::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?
アドバイスをよろしくお願いします。