1、对于简单的数据类型来说int char string
使用new分配后的不管是数组还是非数组形式的内存空间 delete delete[]都可以
原因:分配简单内存,内存大小已经确定,系统可以记忆并管理
对于class类:
A * a = new A[10];
delete a;仅仅释放了a指针指向全部的内存空间,但是只调用了a[0]对象的析构函数 ,a[1]到a[9]内存空间不能释放造成内存泄漏;
delete [] a; 多了[]就 会释放a指针指向的全部内存空间,还会逐一调用每个对象的析构a[1]到a[9]
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "111111111111" << endl;
}
~A()
{
cout << "22222222222222222" << endl;
}
};
int main()
{
A* x = new A[3];
//delete x;
//x = new A[3];
delete [] x;
int * aaa = new int(3);
delete [] aaa;
system("pause");
return 0;
}