随笔 - 40, 文章 - 0, 评论 - 19, 引用 - 0
数据加载中……

删不光的指针数组

@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 犯了一个这样的错误,代码如下:
void CUpLoadQueueDataModel::DoClearAway()
{
    
for(TInt index = 0; index < iDataItemArray.Count(); index++ )
    
{
        
if(iDataItemArray[index])
        
{
            delete iDataItemArray[index];
            iDataItemArray[index] 
= NULL;
        }

        iDataItemArray.Remove(index);
    }

    SaveCacheDataL();
}
粗看没什么问题,仔细想想不对,循环中Remove了数组成员,iDataItemArray.Count()这个值一直在减少并且Array的结构在改变,假如有0 1 2 3 4 5六个元素,按照上面的代码执行则实际只会删除 0 2 5 三个元素就结束循环了- -|
修改后代码如下:
void CUpLoadQueueDataModel::DoClearAway()
{
TInt index
= iDataItemArray.Count() - 1;
while( index >= 0 && iDataItemArray[index] )
{
delete iDataItemArray[index];
iDataItemArray[index]
= NULL;

iDataItemArray.Remove(index);
index
--;
}

 SaveCacheDataL();
}
每次删最后面的。。。测试正常运行,再考虑考虑 感觉如下写法更好:
void CUpLoadQueueDataModel::DoClearAway()
{
while( iDataItemArray.Count() )
{
delete iDataItemArray[
0];
iDataItemArray[
0] = NULL;

iDataItemArray.Remove(0);
}

SaveCacheDataL();
}


现在想想,直接iDataItemArray.ResetAndDestroy()

posted on 2011-12-06 15:54 hadn't 阅读(239) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理