Einstellung einen Zeiger auf null segfault
Habe ich ein struct namens-Knoten wie folgt:
struct node {
int data;
}
gespeichert in einige Struktur:
struct structure {
struct node *pointer;
}
Ich versuche Zeiger auf NULL, wie folgt:
struct structure *elements;
elements->pointer = NULL;
Warum diese segfault? Tut es eigentlich versuchen zu dereferenzieren Sie die Zeiger, bevor Sie es auf null?
Wenn ich wechseln elements
aus einem Zeiger auf die eigentliche Struktur und das folgende tun:
struct structure elements;
elements.pointer = NULL;
Hört es segfaulting und arbeitet. Warum nicht die Einstellung eines Zeigers auf null arbeiten?
- wow, diese Frage wurde schnell gelöst
Du musst angemeldet sein, um einen Kommentar abzugeben.
elements
Zeiger ins nirgendwo. Die Dereferenzierung eines ungültigen Zeigers (elements
Zeiger) ist Undefiniertes Verhalten.Müssen Sie initialisieren
elements
Zeiger auf ein gültiges Objekt, wie:Müssen Sie den Zeiger initialisieren
Wenn Sie dies nicht tun, wird es zeigen Sie auf eine beliebige memory location.
Den ungültigen Zeiger, du bist derefrencing, damit der segfault, ist nicht
elements->pointer
, aberelements
selbst. Denn es wurde nicht festgelegt (z.B.: durch einemalloc
), könnte es zeigen Sie an einem beliebigen Speicherort im Arbeitsspeicher.NULL
.du nicht initialisieren
*elements
.*elements
jetzt Punkte, um nichts, soelements->pointer
ist die Dereferenzierung nichts, was Ihnen Ihre segfault.null
.elements
noch nicht initialisiert wurde, um zu zeigen, um alles noch.