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

 

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

 

 

 

 

 

posted @ 2016-08-12 09:49  DreamDog  阅读(153)  评论(0编辑  收藏  举报