zmienne nie są naprawdę "stworzył" lub "zniszczony". Są to pojęcia na poziomie abstrakcji języka programowania. Kompilator nie musi mieć odwzorowania jeden do jednego między zmienną a adresami pamięci. W praktyce przez większość czasu przestrzeń stosu dla zmiennych lokalnych jest przydzielana od razu na początku funkcji, więc nie ma wpływu na wydajność.
Należy zauważyć, że C++, w przeciwieństwie do C, który nie ma pojęcia dla konstruktorów, obsługuje konstruowanie i niszczenie obiektów, więc jeśli zdefiniowałbyś zmienną typu klasy w pętli for, tak jak poniżej,
class MyClass {
public: MyClass() { cout << "hello world" << endl; }
};
//...
for (int i = 0; i < 10; ++i) {
MyClass m;
}
nazwałbyś go swoim konstruktorem za każdym razem, skutecznie drukując "cześć świat" dziesięć razy. Jest to bardzo odmienne od deklaracji C i nie należy go mylić z nim.
Dzięki, chodzi mi o to, że pamięć jest ponownie przydzielana przy każdej iteracji. Zmieniłem pytanie. –