MFC 里面的 delete 问题

我在一个Vc6.0环境下编写程序,有一个函数(我自己写得,是那种画图函数)需要开辟一些二维数组是double型的,因此我用了double**x;x=newdouble*[... 我在一个Vc6.0环境下编写程序,有一个函数(我自己写得,是那种画图函数)需要开辟一些二维数组是double型的,因此我用了 double **x;x=new double*[4];for(int i=0;i<=4;i++){x[i]=new double[4] } 来动态分配的(这样的数组有很多),结果问题是我在用WIN api 做这个画图程序的时候很正常,关闭该程序也正常; 但是在MFC里面的myview 类调用这样的函数的时候也能画图,可是就是在关闭的瞬间,CPU使用到达百分之百然后持续个几秒钟后才降下来;我打开认为管理器发现在我点击关闭的时候那个程序依然存在(cpu到顶);我就纳闷了 为什么都是一样的函数,在两个不同方法开发程序中就这么差别大呢? 我到网上去查,有人说可能是动态分配的数组内存没有释放;因此我就去用DELETE在我所编写的程序要结束的时候去(此时那些数组就根本没再被访问了) 释放,并且网上说DELETE 的释放方法不一 我每一个都试验了,可是每当我点击画图命令调用画图函数画图的时候 就由一个DEBUG错误,说我程序出错,错误就在DELETE那里 我都查遍了也试变了 可是问题依旧;请哪位大哥大姐懂行的 指点一下 !小弟只有70分全部送上
现在问题已经解决了 我说的是我删除二维数组的方法已经找到了 而且当我关闭程序的时候 Cpu还是瞬间到达百分百,不过时间短多了只有1秒不到;也就是说我释放内存是对的!!!可以解决问题 不过问题还没有完全解决 是因为 我在其他的地方定义了一些 一维的数组 如 double *x,x=new double[100];之类的 我怀疑这些地方也需要释放!!该如何释放!!!!!高手进来!!!!!!!!前面的两个答案作废
展开
 我来答
silvergingko
2008-12-20 · TA获得超过5945个赞
知道小有建树答主
回答量:688
采纳率:0%
帮助的人:871万
展开全部
针对这个回答下:
double **x;x=new double*[4];for(int i=0;i<=4;i++){x[i]=new double[4]。
先delete x[i];//单个元素释放delete
然后delete[] x;//数组释放用delete[]
补充回答:
double *x,x=new double[100];
delete[] x;

使用delete前不用检查指针是否为NULL。删除空指针不会引发错误。
用new之类时,使用NULL对指针进行初始化。目的是,如果不小心在还未用new对该指针进行分配就使用的话,程序会出错,这样就可以轻松地知道错误在哪里。加了NULL,迫使指针指向地址为0x00000000,无论读写该地址都会出错,而不做初始化,指针里的值可能会是个垃圾值,对于这个垃圾值,程序不一定会报错!
delete后,最好也给指针加NULL:delete x;x=NULL;(删除后再使用也会报错,同样可以帮助确定出错位置)
盐水肉西瓜
2008-12-20 · TA获得超过210个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:233万
展开全部
delete [] 试试.

如果是删除数组,必须用 delete[],否则不会释放整个数组所占用的空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魔高丈
2008-12-20 · TA获得超过9506个赞
知道大有可为答主
回答量:2066
采纳率:0%
帮助的人:3479万
展开全部
delete前先检查一下变量是否==NULL,不等再delete
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大鹏2019888
2008-12-20 · 超过21用户采纳过TA的回答
知道答主
回答量:152
采纳率:100%
帮助的人:54万
展开全部
new delete
malloc free
都要成对使用,不要造成内存泄露!建议重新检查代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式