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();
私の質問は、メモリの割り当てが解除されますか???
はい、ポインタを保持するメモリ。ポインタの内容を保持するメモリ、いいえ。また、プログラムの最後に書いてベクトル自体を解放する必要がありますがdelete vec;
、それはあなたが求めているものではないと思います。
いいえ。使用delete
する場合は、を使用する必要がありますnew
(スマート ポインターを使用しない場合)。ベクトルの要素については、いいえ、メモリの割り当ては解除されませんdelete
。ベクトルの各要素で使用する必要があります。何かのようなもの
std::for_each(vec.begin(), vec.end(), [](const int* p) { delete p; });