new
可以直接产生一个数组
#include <iostream>
using namespace std;
int main() {
int* a = new int[4];
delete[] a ;
return 0;
}
new
的中括号里必须填一个字面值常量。析构也需要调用对应的delete []
方法。
所以delete [] a
的时候是怎么知道要删除的数组的大小的?其实是在new int[4]
的时候,多分配了4字节的空间,在这4字节的空间中存放了数组的大小,然后调用4次构造函数。然后delete[]
的时候会从数组中取出这个数组大小,然后调用4次析构函数。