首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

free出错一般都有哪些原因?解决办法

2012-02-10 
free出错一般都有哪些原因?voidCDataConvert::PStrsDestroy(char**papszStrList){char**papszPtrif(papsz

free出错一般都有哪些原因?
void     CDataConvert::PStrsDestroy(char**   papszStrList)
{
        char   **papszPtr;

        if   (papszStrList)
        {
                papszPtr   =   papszStrList;
                while(   *papszPtr   )
                {
                        free(*papszPtr);
      *papszPtr   =   NULL;
                        papszPtr++;
                }

                if(   papszStrList   )
                {
      free(papszStrList);//有时总在这里出错
      papszStrList   =   NULL;
}
        }
}
papszStrList是在外面malloc或realloc的空间,这个函数的主要功能是想释放内存,可总是在free(papszStrList);出错


[解决办法]
可能指针指向的内容已经被释放~
[解决办法]
papszPtr++;
有可能在这里有问题
[解决办法]
PStrsDestroy可能被多次调用了!下面的if的判断是不起作用的:

if( papszStrList )
{
free(papszStrList);//有时总在这里出错
papszStrList = NULL;
}

热点排行