2012-07-28 50 views
0

当我使用创建的指针数组这样的:使用新的,使得它们不被初始化为NULL

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

我得到的100个对象(指针)和默认构造函数的数组被称为在他们身上,它会导致指针是NULL

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

+3

未调用默认构造函数。 http://ideone.com/Uinud – chris 2012-07-28 15:27:39

+0

您需要在循环中运行每个构造函数 – 2012-07-28 15:28:21

+3

如果它们碰巧是NULL,那只是巧合,或者可能是编译器中的一些调试选项。 – 2012-07-28 15:30:28

回答

3

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

(指针不具备构造函数,它们被初始化或者未初始化。)

1

有没有constructor呼叫你的情况做,你得到的是100个指针数组,要么发生在充满零或编译器已经提供了一个代码。当调用new时,语言标准不要求这个数组被初始化。现在

,给您的其他问题:如果这是在critical part of code - 何不干脆在程序的初始化时预先分配所需的阵列?这样你就不用担心一些随机代码将你的指针设置为预定义的值。

相关问题