2017-02-08 1 views
1

Ich habe das Problem eines größeren Fehlers auf etwas scheinbar Einfaches beschränkt.Zuweisen von Wert zu Zeiger führt zu schwerem Fehler

uint8_t *vald; 
*vald=46; 

Das Couplet von Code führt zu einem harten Fehler auf meiner Plattform (Atmel Studio, GCC)

Was mache ich falsch?

+2

Sie haben keinen Speicher zugewiesen. – Anty

+3

Sie geben dem Zeiger keinen Wert zu. Sie versuchen, der Position 'uint8_t' einen Wert zuzuweisen, auf den Ihr Zeiger * * zeigen soll. Aber es zeigt nicht wirklich irgendwo hin. Der Zeiger ist nicht initialisiert. – AnT

Antwort

1

Vald ist nicht initialisiert, was bedeutet, dass es entweder null oder nicht definiert ist, abhängig davon, ob der Compiler den Stack-Frame für lokale Variablen löscht. Das Schreiben auf die Adresse Null ist immer ein Fehler und das Schreiben auf eine undefinierte Adresse ist fast immer ein Fehler.

*((uint8_t*)0) = 46; 
Verwandte Themen