为了账号安全,请及时绑定邮箱和手机立即绑定

析构函数中delete的问题?

析构函数中delete的问题?

MYYA 2019-02-13 11:10:40
自定义了一个类,其中有几个共有成员变量,是char*类型(指针)。构造函数中都初始化为0了。在其中一个成员函数中为这些char* 指针new了个数组。在析构函数中使用delete[]释放内存。运行结束后出错,显示“debug assertion failed”请问为什么?
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

析构函数中应该是这样:(假设char*变量名是str)
if(str!=NULL)delete[]str;
因为你是在成员函数中new的,有可能在你销毁对象时str并没有分配内存,而你却视图释放它指向的内存,当然会出错。加上if判断后就可以避免这种情况。

查看完整回答
反对 回复 2019-03-22
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

new的时候char* p = new type[0] 不要出现,也就是判断下数组是否>0
检查char* 指针用的时候是否重定向了
delete []的时候 要判断下指针是否为空
任何时候delete[] p 之后立刻把指针p = NULL;置空,这样即使你不小心重复delete[] p; 也不会有问题。

查看完整回答
反对 回复 2019-03-22
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

delete []的时候 要判断下指针是否为空!
有可能你在销毁对象时候并没有给指针分配内存空间也是一个问题!
加上一个if语句判断下!

查看完整回答
反对 回复 2019-03-22
  • 3 回答
  • 0 关注
  • 1208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信