2013-03-07 144 views
-5
const unsigned int PATRON_TABLE_SIZE = 10001; 
Patron* patronTable[PATRON_TABLE_SIZE]; 

贊助人是包含基本信息的類。我檢查了patronTable [500]處的指針,它是NULL,但patronTable [5000]處的指針不是NULL。我無法找到任何有關它爲什麼這樣的信息。任何幫助表示讚賞!C++指針陣列的最大尺寸

+5

你初始化'patronTable'嗎? – deepmax 2013-03-07 19:35:41

+1

只是因爲你定義了一個表並不意味着它實際上會被填滿。實際上,它充滿了隨機垃圾留在數組現在佔據的內存位置,並且每次運行程序時,null/not null的內容都會隨機更改。 – 2013-03-07 19:36:34

回答

1

C++中非全局或聲明爲靜態的數組默認情況下未初始化。

2

C++不會自動初始化任何設定值的指針數組(除非您明確地告訴它)。所以你看到的只是隨機垃圾,它恰好佔據了陣列分配的空間。 patronTablePATRON_TABLE_SIZE長,就像你說的那樣

0

如果你編寫非託管(不是.NET)代碼,內存不會被清除。如果你希望所有的數組元素爲NULL做類似memset(patronTable, 0, PATRON_TABLE_SIZE * sizeof(Patron[0]));

0

您可以通過

Patron* patronTable[PATRON_TABLE_SIZE] = { }; 

初始化數組的內容,將所有的值設置爲零。