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; 展开
{
delete temppath;
}
temppath=new point[pathlength];
pathlength是给的int。point 是struct{x,y};
temppath是类的一个变量。重复调用那个方法。第二次就报错。因为第一次temppath==NULL.在mfc上运行。
求指导
是delete [] temppath; 展开
4个回答
展开全部
你这个最好这样做,
创建应该这样;
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;
创建应该这样;
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;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(temppath != NULL)
{
delete[] temppath;
temppath=NULL; //释放以后置空
}
{
delete[] temppath;
temppath=NULL; //释放以后置空
}
追问
我试了。没有用。而且我delete之后紧接着就new了。应该不是这个问题
追答
那但看这部分代码是看不出什么的,出错信息是什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得你是double free了 看看是不是释放了两次
一般就是这个情况
一般就是这个情况
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错误不在你列出的代码上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询