2010-12-30 12 views
0

Ich habe eine Struktur, die ich versuche, mit einigen Adressen zu initialisieren. Ich bekomme Laufzeitfehler von schlechten Zeigern. Adressen werden grundsätzlich nicht korrekt gespeichert.Bad Pointer in Struktur Variable Initialisierung

typedef struct  
{ 

    Uint8  *pInAddr[2];   

}structtest2_t; 


typedef struct  
{    

    structtest2_t structtest2[2]; 

}structtest_t; 

structtest_t structtest; 

Ich versuche zu initialisieren, wie folgt:

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

ich nicht Kompilierungsfehler erhalten, aber es ist schlecht, Zeiger, wenn ich den Wert zu sehen.

Bitte helfen

Dank

+0

Vielleicht ist eine Adresse falsch oder nicht richtig verwendet. Oder vielleicht greift Ihr Programm versehentlich auf den nicht initialisierten structtext.structtest2 [1] zu. –

Antwort

0

Sie müssen wahrscheinlich ändern:

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

zu:

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

Ich bin überrascht, dass Sie eine Compiler-Warnung nicht bekommen für Ihren Code - verwenden Sie gcc -Wall oder gleichwertig?

+0

Hallo, Es war ein Tippfehler meinerseits. Der tatsächliche Code hat die gleiche Form wie Sie vorgeschlagen haben. Ich bekomme falsche Adresse und es gibt schlechte Zeiger Nachricht im Überwachungsfenster. Ich benutze MSVC Compiler.Bitte helfen – user437777

+0

@ user437777: Sie müssen den tatsächlichen Code kopieren und einfügen, anstatt in einer Approximation eingeben. Welchen Wert hat 'someaddress' und welchen Wert sehen Sie in' structtest.structtest2 [0] .pInAddr [0] '? –

Verwandte Themen