Werden Variablen innerhalb einer Schleife (while oder for) entsorgt, nachdem die Schleife abgeschlossen ist?

Sind Variablen, die erstellt werden, innerhalb einer while-oder for-Schleife entsorgt/aus dem Speicher gelöscht, nachdem die Schleife fertig ausgeführt? auch ist es eine schlechte Codierung Gewohnheit zu erstellen, die temporäre Variablen innerhalb einer Schleife?

in diesem Beispiel schafft es 100 X-Variablen und dann entsorgen Sie Sie, oder werden Sie entsorgt, die bei jeder iteration? danke.
Beispiel:

int cc =0;
while(cc < 100){
    int X = 99; //<-- this variable
    cc++;    
}
"Entsorgt" im Verhältnis zu einem int variable/Wert ist .. nicht sehr spannend, da keine spezielle cleanup/Vernichtung durchgeführt wird. Das einzige, was von Interesse ist in diesem Fall der Sichtbarkeit/Gültigkeitsbereich der variable.
Es gibt nur eine variable. Und es ist nicht unwahrscheinlich, dass es keinen gibt, kann der Optimierer kann auch speichern Sie den Wert in einem CPU-register. Es gibt keine speziellen cleanup, ist es einfach "vergisst" die variable, wenn Sie wieder das stack-pointer. Wichtig, int muss schnell sein. Beste, was zu tun zu bekommen, Einsicht ist der Blick in die Liste der assembly, die Ihr compiler generieren kann.
Entsorgt, in Kombination mit C++, ist ein eher problematischer Begriff. Es könnte bedeuten, "zerstört", aber dann sollten Sie schreiben Sie "vernichtet" und nicht "entsorgt". Oder könnte es etwas anderes meinen. In deiner Frage "etwas anderes" sein könnte: hat der compiler code generieren, wiederholt, reserviert und freigibt Speicher für die variable.

InformationsquelleAutor Daniel Valland | 2014-10-24

Schreibe einen Kommentar