使用new创建指针数组,这样指针就不会初始化为NULL

Creating array of pointers using new such that they are not initialized to NULL

本文关键字:指针 初始化 NULL 创建 new 数组 使用      更新时间:2023-10-16

当我使用这个时:

int** newData = new int*[100];

我得到一个由100个对象(指针)组成的数组,并对它们调用默认构造函数,这会导致指针为NULL

如果这是代码的关键部分,并且我想避免数组的无效,我能以一种好的方式避免它吗?(不使用malloc

这是一个实现质量问题。指针不能保证在您显示的代码中初始化。在C++中,没有其他方法可以动态分配一个指针数组,从而保证更高的性能。

(指针没有构造函数,它们要么已初始化,要么未初始化。)

在您的情况下没有进行constructor调用,您得到的是一个由100个指针组成的数组,这些指针要么恰好被零填充,要么编译器已经放入了这样做的代码。当调用new时,语言标准不要求初始化此数组。

现在,针对您的另一个问题:如果这是在critical part of code中,为什么不在程序初始化时简单地预分配所需的数组?这样,您就不需要担心一些随机代码将指针设置为预定义值。