析构函数中delete的问题?

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

MYYA
浏览 1148回答 3
3回答

萧十郎

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

牛魔王的故事

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

胡说叔叔

delete []的时候 要判断下指针是否为空!有可能你在销毁对象时候并没有给指针分配内存空间也是一个问题!加上一个if语句判断下!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

WebApp