Garantierte Lebensdauer temporärer Objekte in C
In C wird eine temporäre Variable erstellt, wenn ein Ausdruck einen Wert ergibt, der nicht gespeichert wird in einer benannten Variablen. Im angegebenen Code wird innerhalb des Funktionsaufrufs GetString() ein temporäres StringBuffer-Objekt erstellt:
StringBuffer(mystring).Size(MAXLEN)
Es stellt sich die Frage, wann der Destruktor für dieses temporäre Objekt aufgerufen wird:
Lebensdauer temporärer Objekte:
C garantiert, dass die Lebensdauer eines temporären Objekts bis zum Ende des vollständigen Ausdrucks in reicht wodurch es entsteht. Ein vollständiger Ausdruck ist der äußerste Ausdruck, der nicht Teil eines anderen Ausdrucks ist. In diesem Fall ist der vollständige Ausdruck der gesamte Funktionsaufruf GetString():
GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
Zerstörungszeitpunkt:
Daher der Destruktor für das temporäre StringBuffer-Objekt wird nach aufgerufen, nachdem die Funktion GetString() zurückgegeben und der Wert ausgewertet wurde. Dieses Verhalten wird durch den C-Standard in 12.2 „Temporäre Objekte“ garantiert.
Bedeutung für Ausdrucksvorlagen:
Diese lebenslange Garantie ist entscheidend für Ausdrucksvorlagen, die halten können Verweise auf temporäre Objekte innerhalb von Ausdrücken. Beispielsweise die folgende Ausdrucksvorlage:
e = a + b * c / d
Kann Verweise auf die von jedem Operanden erstellten temporären Objekte beibehalten, da die Lebensdauer jedes temporären Objekts bis zum Ende des gesamten Ausdrucks reicht.
Das obige ist der detaillierte Inhalt vonWann werden temporäre C-Objekte zerstört?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!