2017-03-29 2 views
-1

Wenn ich diesen Code mit der "Problem-Zeile" auskommentiert ausgeführt wird, wird es ausgeführt und fügt Knoten 10 in die Struktur. Wenn ich es mit der Problem-Zeile starte, sehe ich, dass es Coredumps.Core-Dump, wenn globale Variable verwendet

Wenn ich ohne die Problemlinie laufe, sehe ich, dass der else Teil am Anfang des Hauptdruckes "Wurzel ist null nach der Erstellung". Mit dem Problem enter code here Zeile, "Root ist nicht Null, nachdem die Erstellung gedruckt wird".

Was ich nicht verstehe ist, warum der Knoten * root; Initialisierung hängt davon ab, ob die globale Variable verwendet wird?

Antwort

1
Node* root; 

root ist eine lokale Variable und wenn sein Wert wird Müll sein nicht initialisiert. Also manchmal könnte es mal anders sein. Wenn es verwendet wird, wird es zu undefiniertem Verhalten führen, das in Coredump enden kann. Die Lösung ist es zuzuweisen:

Node* root = nullptr; 

auch:

Was ich nicht verstehe ist, warum der Knoten * root; Initialisierung hängt davon ab, ob die globale Variable verwendet wird?

Wenn Sie ein undefiniertes Verhalten in Ihrem Code haben, dann ist alles möglich, auch so seltsames Verhalten, wie Sie es beschreiben.