C++学习008-delete与delete[]的差别
【摘要】
对于简单的数据类型,delete与delete[]是没啥差别的,就是等价的
例如
int main(){ int *pdata = new int[20]; delete pdata; //delete[] pdata; r...
对于简单的数据类型,delete与delete[]是没啥差别的,就是等价的
例如
-
int main()
-
{
-
int *pdata = new int[20];
-
-
delete pdata;
-
//delete[] pdata;
-
-
-
return 0;
-
}
这两是等价的,没有什么区别,
但是如果是一个动态分配数据的数据类型,就不同了,delete[]在释放数组控件前,对数组中每一个对象调用析构函数,而delete择仅仅是释放指针所指的控件
例如
-
class Student
-
{
-
private:
-
char* name;
-
int age;
-
-
-
public:
-
Student() { name = new char[100]; };
-
~Student() { delete name; };
-
-
-
-
};
-
-
int main()
-
{
-
Student* pData = new Student[20];
-
-
-
delete[] pData;
-
-
-
-
return 0;
-
}
在这里如果使用了delete,那就会有意想不到的后果了,至于什么后果,在我尝试编译的时候 ,触发了中断。
应该是内存访问有问题了。
文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。
原文链接:dreamlife.blog.csdn.net/article/details/52188782
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)