-5
const unsigned int PATRON_TABLE_SIZE = 10001;
Patron* patronTable[PATRON_TABLE_SIZE];

パトロンは基本的な情報を含むクラスです。patronTable [500]のポインタを確認しましたが、NULLですが、patronTable[5000]のポインタがNULLではありません。なぜこれがそうなのかについての情報を見つけることができません。どんな助けでも大歓迎です!

4

4 に答える 4

2

c++ は、ポインターの配列を任意の設定値に自動的に初期化しません (明示的に指示しない限り)。したがって、あなたが見ているのは、配列が割り当てられたスペースをたまたま占めていたランダムなガベージです。patronTableあなたがPATRON_TABLE_SIZE言ったように、長いです

于 2013-03-07T19:37:08.123 に答える
1

グローバルではない、または静的に宣言されている C++ の配列は、デフォルトでは初期化されません。

于 2013-03-07T19:36:29.997 に答える
0

アンマネージ (.NET ではない) コードをプログラムする場合、メモリはクリアされません。すべての配列要素を NULL にしたい場合は、次のようにしますmemset(patronTable, 0, PATRON_TABLE_SIZE * sizeof(Patron[0]));

于 2013-03-07T19:44:40.053 に答える
0

配列の内容を初期化するには、次のようにします。

Patron* patronTable[PATRON_TABLE_SIZE] = { };

これにより、すべての値がゼロに設定されます。

于 2013-03-07T23:04:17.680 に答える