Zurückgeben eines Verweises auf eine lokale Variable
Der folgende Codeausschnitt gibt einen Verweis auf eine lokale Variable zurück, was allgemein als schlechte Praxis gilt C:
int& foo() { int i = 6; return i; }
Dieser Code funktioniert wie erwartet und weist i in der Hauptfunktion den Wert der lokalen Variablen i zu. Dies kann jedoch zu undefiniertem Verhalten führen, da der Speicher der lokalen Variablen freigegeben wird, wenn die Funktion zurückkehrt.
Sie fragen sich vielleicht, wie das noch funktioniert, da lokale Variablen bei der Rückkehr der Funktion aus dem Stapelspeicher entfernt werden. Der Grund dafür ist, dass der Stapelrahmen für die Funktion nicht immer sofort nach der Rückkehr gelöscht wird. Dies bedeutet, dass die von foo() zurückgegebene Referenz auch nach Abschluss der Ausführung der Funktion noch gültig ist.
Sie sollten sich darüber im Klaren sein, dass dieses Verhalten nicht garantiert ist und je nach Compiler- und Optimierungseinstellungen variieren kann. Daher ist es am besten, die Rückgabe von Verweisen auf lokale Variablen zu vermeiden und stattdessen bei Bedarf Kopien der Daten zurückzugeben.
Das obige ist der detaillierte Inhalt vonWarum wird die Rückgabe eines Verweises auf eine lokale Variable in C als schlechte Praxis angesehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!