11

データ構造で実装しているテーブルがあります。私のコードの重要なブロックは次のようになります (h はデータ構造、table は他の構造を格納するテーブルです):

(h->table[hash(key, h->size)]

コードの実行中に、一部のテーブル [i] が初期化され、一部は初期化されません。まだ初期化されていない table[i] でコードをテストすると、基本的に初期化されていない配列を操作できないという valgrind エラーが発生します。

私の質問は、特定の h->table[i] が初期化されているかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

7

できません。この問題を解決するには、構造体を使用する前に必ず初期化してください (初期化によって構造体が既知の「空白」/「未入力」状態に設定される場合でも)。

于 2013-04-19T06:31:34.677 に答える
1

構造体を宣言するときは、calloc または memset を使用してそれらをすべてゼロに設定し、後で 0 または NULL と比較して、構造体が使用されていないかどうかを確認します。

于 2013-04-19T06:31:54.000 に答える