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