2013-03-07 172 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] = { }; 

初始化数组的内容,将所有的值设置为零。