int`* p = new int [5];和int * p = new int [5];之间有什么区别?

时间:2019-03-23 18:47:13

标签: c++ dynamic-memory-allocation

我只需要了解它们之间的区别是什么

int *p = new int[5];

int *p = new int(5);

1 个答案:

答案 0 :(得分:7)

一个将创建一个由五个int组成的数组,并将指向该数组的第一个元素的指针分配给p。此数组中的所有整数均未初始化:

int *p = new int[5]; // a pointer to an array of 5 integers

另一个创建一个int,并将指向该int的指针分配给p。该整数用5初始化:

int *p = new int(5); // a pointer to an int

正如tadman在他的评论中指出的,本质上,区别在于operator new and operator new[]之间。 new[]分配一个数组,必须用delete[]删除 ,而new分配一个对象,并且必须用delete删除。如果使用错误的运算符删除,则会发生未定义的行为。当然,除非您是图书馆实施者,否则通常 newnew[]更喜欢智能指针和库容器。