std::vector<int> x;
はスコープを抜けると自動的に要素のメモリも解放される。
std::vector<int*> y;
上のように要素をポインタにした場合は勝手に解放されないので
自分で解放しないと要素はメモリリークする。
それぞれの要素を自分で解放する。
std::vector<int*> y;
y.push_back(new int(1));
....
for (unsigned int i = 0; i < y.size(); ++i) {
delete y[i]; //配列の場合は delete[] y[i]
}
// イテレータで解放する場合
for (auto i = y.begin(); i != y.end(); ++i) {
delete i;
}
自分で解放するよりスマートポインタとか使ったほうがいいのかな?
0 件のコメント:
コメントを投稿