delete 数组问题。运行时总是报错。mfc上运行

if(temppath!=NULL){deletetemppath;}temppath=newpoint[pathlength];pathlength是给的int。poi... if(temppath != NULL)
{
delete temppath;
}

temppath=new point[pathlength];

pathlength是给的int。point 是struct{x,y};
temppath是类的一个变量。重复调用那个方法。第二次就报错。因为第一次temppath==NULL.在mfc上运行。
求指导
是delete [] temppath;
展开
 我来答
百度网友9de5b9a
2012-07-18 · TA获得超过894个赞
知道小有建树答主
回答量:361
采纳率:0%
帮助的人:461万
展开全部
你这个最好这样做,
创建应该这样;
point*arrPoint=(point*)malloc(sizeof(point)*pathlength);
删除这样:
free(arrpoint)

赋值用
memcpy();函数

当然你用
temppath=new point[pathlength];

必须这样:
temppath[0]=new point(0,0);
temppath[1]=new point(0,0);
.
.
temppath[pathlength-1]=new point(0,0);
都必须要new,要申请内存
应为你开始只是申请了指针数组的内存,指针指向的对象还没有赋值
删除的时候先循环删除每一个元素,
最后在用delete[]temppath;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lsslddd
2012-07-18 · TA获得超过936个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:427万
展开全部
if(temppath != NULL)
{
delete[] temppath;
temppath=NULL; //释放以后置空
}
追问
我试了。没有用。而且我delete之后紧接着就new了。应该不是这个问题
追答
那但看这部分代码是看不出什么的,出错信息是什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
超凡还安逸灬小牛L
2012-07-18 · TA获得超过120个赞
知道小有建树答主
回答量:252
采纳率:0%
帮助的人:196万
展开全部
我觉得你是double free了 看看是不是释放了两次
一般就是这个情况
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
beddy1
2012-07-18 · TA获得超过1989个赞
知道大有可为答主
回答量:2271
采纳率:0%
帮助的人:2220万
展开全部
错误不在你列出的代码上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式