std::vectorのclear()は配列数を0に戻すために使うが、メモリを開放してるわけではない。
ポインタと違ってデストラクタが呼ばれると勝手に開放してくれるが、
明示的に開放してほしいならswap技法を使うべし。
aaa.push_back(2);
aaa.push_back(5);
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
aaa.clear();
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
size:0 value:5
ポインタと違ってデストラクタが呼ばれると勝手に開放してくれるが、
明示的に開放してほしいならswap技法を使うべし。
- ソース
aaa.push_back(2);
aaa.push_back(5);
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
aaa.clear();
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
- 出力
size:0 value:5
コメントをかく