new int(10)和new int[10] 的区别?
int *p = new int(10);
相当于
int *p = _new(sizof(int));//只配置空间
*p = 10;//赋初值
----------------------------------
int *p = new int[10];
相当于
int *p = (int*)_new(10*sizof(int));//只配置空间
说得很对,可以理解new int(10)调用了int类型的构造函数
new int(10)是系统分配一个int类型的空间,内容初始化为10。结果是这个内存空间的指针地址。
new int[10]是系统分配一块连续空间,大小为10个int类型的大小,结果是这块空间的起始地址。实际上是分配了一个整型数组的空间,数组大小为10个int型,没有初始化数组的内容。
c++ 中动态分配内存的两个版本,是赋值给int,[]分配一个数组