const unsigned int PATRON_TABLE_SIZE = 10001;
Patron* patronTable[PATRON_TABLE_SIZE];
赞助人是包含基本信息的类。我检查了patronTable [500]处的指针,它是NULL,但patronTable [5000]处的指针不是NULL。我无法找到任何有关它为什么这样的信息。任何帮助表示赞赏!C++指针阵列的最大尺寸
const unsigned int PATRON_TABLE_SIZE = 10001;
Patron* patronTable[PATRON_TABLE_SIZE];
赞助人是包含基本信息的类。我检查了patronTable [500]处的指针,它是NULL,但patronTable [5000]处的指针不是NULL。我无法找到任何有关它为什么这样的信息。任何帮助表示赞赏!C++指针阵列的最大尺寸
C++中非全局或声明为静态的数组默认情况下未初始化。
C++不会自动初始化任何设定值的指针数组(除非您明确地告诉它)。所以你看到的只是随机垃圾,它恰好占据了阵列分配的空间。 patronTable
是PATRON_TABLE_SIZE
长,就像你说的那样
如果你编写非托管(不是.NET)代码,内存不会被清除。如果你希望所有的数组元素为NULL做类似memset(patronTable, 0, PATRON_TABLE_SIZE * sizeof(Patron[0]));
您可以通过
Patron* patronTable[PATRON_TABLE_SIZE] = { };
初始化数组的内容,将所有的值设置为零。
你初始化'patronTable'吗? – deepmax 2013-03-07 19:35:41
只是因为你定义了一个表并不意味着它实际上会被填满。实际上,它充满了随机垃圾留在数组现在占据的内存位置,并且每次运行程序时,null/not null的内容都会随机更改。 – 2013-03-07 19:36:34