0

当我使用这个时:

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

我得到 100 个对象(指针)的数组,并在它们上调用默认构造函数,它导致指针为NULL.

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

4

2 回答 2

3

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

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

于 2012-07-28T15:30:13.477 回答
1

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

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

于 2012-07-28T15:37:22.507 回答