0
std::vector<int*> * vec=new std::vector<int*>();
int* p=new int();
int* q=new int();
vec.push_back(p);
vec.push_back(q);
.
.
.
vec.clear();

私の質問は、メモリの割り当てが解除されますか???

4

2 に答える 2

3

はい、ポインタを保持するメモリ。ポインタの内容を保持するメモリ、いいえ。また、プログラムの最後に書いてベクトル自体を解放する必要がありますがdelete vec;、それはあなたが求めているものではないと思います。

于 2013-03-05T06:27:33.990 に答える
2

いいえ。使用deleteする場合は、を使用する必要がありますnew(スマート ポインターを使用しない場合)。ベクトルの要素については、いいえ、メモリの割り当ては解除されませんdelete。ベクトルの各要素で使用する必要があります。何かのようなもの

std::for_each(vec.begin(), vec.end(), [](const int* p) { delete p; });
于 2013-03-05T06:27:50.790 に答える