当我使用这个时:
int** newData = new int*[100];
我得到 100 个对象(指针)的数组,并在它们上调用默认构造函数,它导致指针为NULL
.
如果这是代码的关键部分,并且我想避免数组无效,我可以以一种好的方式避免它吗?(不使用malloc
)
当我使用这个时:
int** newData = new int*[100];
我得到 100 个对象(指针)的数组,并在它们上调用默认构造函数,它导致指针为NULL
.
如果这是代码的关键部分,并且我想避免数组无效,我可以以一种好的方式避免它吗?(不使用malloc
)
这是实施质量问题。不能保证在您显示的代码中初始化指针。没有其他方法可以在 C++ 中动态分配指针数组,以保证更高的性能。
(指针没有构造函数,它们要么已初始化,要么未初始化。)
在你的情况下没有constructor
调用,你得到的是一个由 100 个指针组成的数组,这些指针要么恰好被零填充,要么编译器已经放置了一个代码来这样做。语言标准不要求在new
调用 时初始化此数组。
现在,对于您的另一个问题:如果这是在critical part of code
- 为什么不简单地在程序初始化时预先分配所需的数组?这样您就不必担心一些随机代码将您的指针设置为预定义的值。