delete 空指针的问题。很着急。希望解答下
std::vector<QueueItemBase*> m_Items;
for(size_t i=0; i<m_Items.size(); i++)
{
if( m_Items[i]->RequestId == item_id )
{
// 中身の削除
m_Items[i] = NULL;
delete m_Items[i];
m_Items.erase( m_Items.begin() + i );
found= true;
break;
}
}
程序结构就是上边这样。
m_Items[i] = NULL;
delete m_Items[i];
我这种写法会不会出些内存泄露。本来的代码里面没有m_Items[i] = NULL;但是我不加这个的话。第一次删除没有问题。但是第二次删除程序就死机了。我给m_Items[i] = NULL;写在delete m_Items[i];的下面程序也死机。只有写成
m_Items[i] = NULL;
delete m_Items[i];
程序没有事儿。所以问问各位高手。这样写安全么?会不会内存泄露。谢谢大家了。