2011/07/01

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 件のコメント:

コメントを投稿