c++ - C++中的动态分配数组差异

标签 c++ new-operator dynamic-memory-allocation

<分区>

今天我在cpp中遇到了一种新的分配类型,我从未听说过我试图搜索谷歌但没有找到任何相关答案。

long int *a=new long int[N+1]();

我知道long int *a = new long int[N+1];

但是以上两者有什么区别呢?

最佳答案

long int *a = new long int[N+1]();
                               ^^

分配内存,initialize them to the default state类型(对于内置类型,零)。这是初始化由 new 分配的对象的标准方法,因此它们不包含不确定的值(虽然没有 UB)。在 C++11 中,您还可以使用大括号:

long int *a = new long int[N+1]{};
                               ^^

关于c++ - C++中的动态分配数组差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47321277/

相关文章:

c++ - 如何为数组类型调用新运算符

c++ - 如何在不使用动态内存分配的情况下创建基于指针的二叉树?

c - 如何在 C 中为字符串数组动态分配内存?

c++ - 我可以删除以前动态分配但指针不同的内存吗?

c++ - 如何确定 2 个路径是否在可移植 C++ 中引用同一个文件

c++ - 有什么办法可以在 C++ 中使可变长度数组成为全局数组吗?

c++ - 从 C++ 中的方法访问指向对象的私有(private)指针数组

c++ - 如何将常量数组传递给构造函数初始化列表

c++ - 为什么 numeric_limits::min 为 int 返回负值,但为 float/double 返回正值?

android-studio - Android Studio 代码折叠和 Dart 2 中可选的 new 关键字