看书看到了3种写法,试验了一下也都可以,
         定义了一个 CList<TAG*, TAG*> TagList;
用完之后 删除所有ListTag
方法1、
POSITION pos = TagList.GetHeadPosition();

for(i=0; i<TagList.GetCount(); i++)
{
    delete TagList.GetNext(pos);
}
        TagList.RemoveAll(); 2、
         POSITION pos = TagList.GetHeadPosition();
while(pos !=NULL)
{
delete TagList.GetNext(pos);
}
TagList.RemoveAll();

3、 while (!TagList.IsEmpty()) 
{
  delete TagList.RemoveHead();
} 我觉得第3种简洁一些 ,可怎么都喜欢用 第2种呢  有什么内涵吗

解决方案 »

  1.   

    CList  是个容器,他里面其实 已经写好了 析构函数,会自动删除 链表。。
      

  2.   

    CList是会自动删除, 但如果存储的是指针元素的话,自动删除是不会给你是释放该指针指向的内存的,会造成内存泄露。楼主的三种写法都是用来清空容纳指针元素时的CList的。楼主喜欢第三种写法,不过 !TagList.IsEmpty() 的判断似乎开销要比 pos !=NULL 高,此外还个人的习惯有关系。我通常就是用第二种