07項 newしたポインタのコンテナを使うときは、必ずポインタをdeleteした後にコンテナを破棄しよう
newしたポインタのコンテナを使うときは、必ずポインタをdeleteした後にコンテナを破棄しよう
newしたポインタのコンテナをの各要素のdeleteを忘れるとメモリリークが起こります。
なので、スマートポインタ(Boostのshared_ptrなど)のコンテナを作るべきです。
スマートポインタが使えない時は、for_eachで各要素のdeleteを行います。
struct DeleteObject{ template<typename T> void operator ()(const T* ptr) const { delete ptr; } }; void doSomething() { deque<SpecialString*> dssp; for (int i = 0; i < 10; i++) dssp.push_back(new SpecialString); for_each(dssp.begin(), dssp.end(), DeleteObject()); }