gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:08:17 26 4
gpt4 key购买 nike

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

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 and operator new[] . new[] 分配一个数组并且必须delete[] 删除,而new 分配一个对象并且必须使用 delete 删除。如果您使用错误的运算符进行删除,则会发生未定义的行为。当然,除非您是库实现者,否则您应该通常更喜欢智能指针和库容器,而不是 newnew[]

关于c++ - int `*p = new int(5);` 和 `int *p = new int[5];` 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com