「NULLポインタの間接参照です」のエラー内容が分からない
C言語のプログラムを作成しています。
できあがったコードを静的解析ツールにかけたのですが、「NULLポインタの間接参照です」が表示され何で怒られているのか分かりません。
NULLで初期化しているので、アドレスを代入するのは問題ないと思うのですが、どこかまずい箇所がありますか?
発生している問題・エラーメッセージ
ポインタはNULLチェックされたにもかかわらず、その後間接参照されます。
該当のソースコード
c
1//代入元の配列を定義 2const LIST_st OutList[] = 3{ 4... 5}; 6 7main() 8{ 9... 10 //ポインタを定義(前後のコードの関係上ダブルポインタで設計しています。。) 11 const LIST_st **InList = NULL; 12 //LISTの数だけメモリを確保 13 InList = (const LIST_st**)malloc(sizeof(LIST_st*) * (LIST_NUM)); 14 if(InList == NULL) 15 { 16 abort(); 17 } 18 19 //OutListのアドレスを順にInListに代入していく 20 for(i = 0; i < LIST_NUM; i++) 21 { 22 //ここでエラーメッセージが表示される 23 InList[i] = &OutList[i]; 24 } 25... 26 27} 28
調べたこと
間接参照はポインタ変数の読み出し(1回目)、次に読み出した値のアドレスのメモリーを参照(2回目)すること。という知識を得ています。
今回だとInList[i]の読み出し(1回目)、InList[i]のアドレスのメモリーを参照になると思います。が、解決の糸口には結びつけることができませんでした。。
回答2件
あなたの回答
tips
プレビュー