我只需要了解它们之间的区别:
int *p = new int[5];和
int *p = new int(5);发布于 2019-03-23 18:49:07
一个创建一个由五个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[]。new[]分配数组,必须用delete[]删除,而new分配单个对象,必须用delete删除。如果使用错误的运算符进行删除,所发生的是未定义的行为。当然,除非您是一个库实现者,否则通常应该比new和new[]更喜欢智能指针和库容器。
https://stackoverflow.com/questions/55317213
复制相似问题