2010-12-30 8 views
0

いくつかのアドレスで初期化しようとしている構造体があります。 不良ポインタの実行時エラーが発生します。基本的にアドレスは正しく格納されません。構造変数の初期化時に無効なポインタ

typedef struct  
{ 

    Uint8  *pInAddr[2];   

}structtest2_t; 


typedef struct  
{    

    structtest2_t structtest2[2]; 

}structtest_t; 

structtest_t structtest; 

私は次のように初期化するために試してみてください。

structtest.structtest2[0].pInAddr[0]=(uint8*)(someaddress); 

私はコンパイルエラーを取得いけないが、私は値を見ると悪いポインタがあります。

あなたはおそらく変更する必要が

おかげ

+0

someaddressが正しくないか正しく使用されていない可能性があります。あるいは、あなたのプログラムが、初期化されていないstructtext.structtest2 [1]に誤ってアクセスするかもしれません。 –

答えて

0

助けてください:私はあなたがコンパイラ警告を取得しないことに驚いている

structtest.structtest2[0].pInAddr[0]=(uint8*)(someaddress); 

:に

structtest.structtest2[0]=(uint8*)(someaddress); 

をあなたのコードに - gcc -Wallまたはそれと同等のものを使用していますか?

+0

こんにちは、それは私の部分の入力エラーでした。実際のコードは、あなたが提案したのと同じ形式です。間違ったアドレスがスローされ、ウォッチウィンドウに悪いポインタメッセージが表示されます。私はMSVCコンパイラを使用しています。助けてください – user437777

+0

@ user437777:近似ではなく実際のコードをコピーして貼り付ける必要があります。 'someaddress'とはどのような価値があり、' structtest.structtest2 [0] .pInAddr [0] 'にはどのような価値がありますか? –

関連する問題