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

释放的时候为什么会出错?解决办法

2012-03-09 
释放的时候为什么会出错?? CRectView::~CRectView(){for(inti0i RECTAREA_HEIGHT+1++i){delete[]RectA

释放的时候为什么会出错??

CRectView::~CRectView()
{
    for(int   i=0;i <RECTAREA_HEIGHT+1;++i)  
    {
            delete       []   RectArea[i];       //RectArea已声明过是int   **RectArea类型。
    RectArea[i]=NULL;
    }

    delete   []RectArea;//如果将其注释后,关闭程序时就不会报错了。      
    RectArea=NULL;

}

非常不理解,请问哪里出错了???

[解决办法]
delete [] RectArea[i];
改称delete RectArea[i];试试
[解决办法]
RectArea是怎么来的?
[解决办法]
一楼说的是不正确的解决方式.

首先分析 RectArea 的初始化过程,然后在调试中加 watch point 观察是否被意外修改过。
[解决办法]
RectArea已声明过是int **RectArea类型并不等价于二维数组,建议搂主贴上初始化
[解决办法]
关键要看你的

RectArea 是什么定义的
[解决办法]
for(int i=0;i <RECTAREA_HEIGHT+1;++i)
====
为什么是要+1: RECTAREA_HEIGHT+1
通常的用法是不加的,看看这里有没有问题?

热点排行