读书人

关于容器删除元素的疑问,该怎么解决

发布时间: 2012-05-21 18:04:41 作者: rapoo

关于容器删除元素的疑问

C/C++ code
void EMapEditSchedule::clearAll(){    for(CMDList::iterator c = m_cmdList.begin();        c != m_cmdList.end();        ++c)    {        delete (*c);     //(1)        --m_cnt;    }    m_cmdList.clear();   //(2)    m_cmd = m_cmdList.end();}

代码如上,CMDList是deque类型,经过(1)不是已经把元素都删除了么,为什么还有(2),不懂

[解决办法]
(1)仅仅是释放指针所指的堆内存,并没有删除指针本身。
(2)才是真正将指针本身从List中删除。
[解决办法]
探讨

第一个是释放deqeue里所有指针指向的内存。
第二个是令deqeue里的所有指针地址为NULL。

dequeu对象占用的内存是没被释放的,包括deqeue对象自身和dequeue里的一堆指针占用的地址。

读书人网 >C++

热点推荐