#include <iostream>
int Value()
{
int x = 90;//creates a variable x
return x;//returns the value x, into the caller
//x is destroyed because it is out of scope
}
int * ptr()
{
int x = 7;//creates variable x
return &x;//returns a pointer to x
//x gets destroyed because it is out of scope
}
Innen HauptfunktionReturn von Wert und von Adresse
int y = Value();// y = 7
int *py = ptr();
/* *py = 7, not Undefined Behaviour?? */
ich diesen Code zu erstellen, und das Programm im Debugging, I * py = 7 in meine Uhr Fenster. Sollte ich nicht ein Undefined Verhalten, und das Programm abstürzen, da py zeigt auf eine Adresse, die jetzt Müll haben (x in ptr() ist außerhalb des Geltungsbereichs)
Das Problem mit UB ist, dass eine der Möglichkeiten ist, dass es * scheint * zu funktionieren. Versuchen Sie, die Reihenfolge der Aufrufe zu ändern, und nach dem Aufruf von "Value" wird höchstwahrscheinlich der Änderungswert "* py" angezeigt. –
Ich tat es jetzt gibt mir 0. Dank – Forat
Dies ist auch sehr Compiler und OS abhängig. Dies ist es, was mit undefiniertem Verhalten gemeint ist, weil es Implementierung definiert ist und nicht garantiert wird, dass sie unter allen Umständen gleich funktioniert. – ugar