私がこれを持っていると仮定します:
void f(...)
{
.
.
std::list<X*> xList;
.
// Then i fill the list
std::list<X*>::iterator iter;
for (iter = xList.begin(); iter != xList.end(); ++iter)
{
*iter = new X();
}
}
xList が範囲外になると、コンテナはリスト内に含まれるオブジェクトのデストラクタを呼び出す必要があることを知っていますか? まず、それは本当ですか?
もしそうなら、リストにはクラス X へのポインタが含まれているため、xList が範囲外になったときにデストラクタ ofX を呼び出すべきではありませんか? したがって、X によって保持されていたメモリを解放しますか?