Возможный дубликат:
деструктор вызова метода std::list::remove каждого удаленного элемента?
Предположим, у меня есть это:
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, не следует ли вызывать деструктор класса X, когда xList выходит за пределы области видимости? Таким образом освобождая любую память, которая удерживалась X?