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

问题描述 投票:2回答:1

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

int *p = new int[5];

int *p = new int(5);
c++ dynamic-memory-allocation
1个回答
7
投票

一个创建一个由五个ints组成的数组,并将指向该数组的第一个元素的指针指定给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[]

© www.soinside.com 2019 - 2024. All rights reserved.