переменных не является действительно "создан" или "уничтожены". Это понятия на уровне абстракции языка программирования. У компилятора не требуется сопоставление между одним и несколькими адресами памяти и памятью. На практике большую часть времени пространство стека для локальных переменных выделяется сразу в начале функции, поэтому это не повлияет на производительность.
Обратите внимание, что C++, в отличие от C, который не имеет понятия для конструкторов, поддерживает конструкцию объектов и их разрушение, поэтому, если вы должны были определить переменную типа класса в цикле for, как показано ниже,
class MyClass {
public: MyClass() { cout << "hello world" << endl; }
};
//...
for (int i = 0; i < 10; ++i) {
MyClass m;
}
Вы бы назвали его конструктором каждый раз, эффективно печатая «мир привет» десять раз. Это сильно отличается от объявлений C и не следует путать с ним.
Спасибо, я имел в виду, что память перераспределяется на каждой итерации. Я изменил вопрос. –