переменная создается в стеке.В вашем коде:
for (...) { A a; }
... И затем в конце любого цикла «for» переменная уничтожается автоматически (потому что она выходит из области видимости), как сказал Нил:
Нил Баттерворт: Фактически в вашем коде a является автоматическим объектом ...
Но если объект выполняет некоторые динамические выделения (IOW, onкучи) в течение своего жизненного цикла, тогда будьте внимательны, чтобы освободить память самостоятельно, либо в деструкторе А, либо снаружи.Пример C:
struct A {
A(char *ptr);
~A();
private:
char *p;
int len;
};
A::A(char *ptr)
{
len = strlen(ptr);
p = (char *) malloc(len+1);
if(!p) {
exit(1);
}
strcpy(p, ptr);
}
A::~A()
{
free(p);
}
Переменная p не освобождается автоматически, если вы не вызываете бесплатную процедуру.
Пока (и простите за мой английский)
PS: я бы хотел сказать, что слово «статически» так жестко раскритиковано в этом контексте, что это не так плохо, как они jkp и jldupont ...
jkp: " Слово"static немного вводит в заблуждение, это подразумевает использование ключевого слова static ...."
jldupont:" Вы не объявляете статическую переменную ...."
и так далее ...
jkp и jldupont на 100% правы , но в итальянском техническом языке некоторые программисты на C ++ используют слово " созданныйстатически"и" встроенные статически"для идентификации переменной будут созданы в стеке
Если вместо этого вы определяете статическую переменную, другими словами
static A a;
Те же программисты используют для вызова « статическая переменная » и « переменная, объявленная как статическая ».