[英]What is the difference between int `*p = new int(5);` and `int *p = new int[5];`
我只需要了解它们之间的区别是什么:
int *p = new int[5];
和
int *p = new int(5);
创建一个由五个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
和operator new[]
之间是有区别的。 new[]
分配一个数组, 必须使用delete[]
,而new
分配一个对象,并且必须使用delete
。 如果使用错误的运算符删除,则会发生未定义的行为。 当然,除非您是库实现者,否则通常应该首选智能指针和库容器,而不是new
和new[]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.