C++学习008-delete与delete[]的差别

对于简单的数据类型,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,那就会有意想不到的后果了,至于什么后果,在我尝试编译的时候 ,触发了中断。

应该是内存访问有问题了。

原文地址:https://www.cnblogs.com/DreamDog/p/9160109.html