可能重複:
Does std::list::remove method call destructor of each removed element?容器出範圍和內存管理
假設我有這樣的:
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所擁有的任何內存?
這與您的即時問題無關,但這不是填充操作。這是對列表元素的分配。如果這個列表從創建時開始一直是空的,那麼它也是一個空操作。 –