2012-07-28 18 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 - 何不乾脆在程序的初始化時預先分配所需的陣列?這樣你就不用擔心一些隨機代碼將你的指針設置爲預定義的值。

相關問題