Здравствуйте, DemAS, Вы писали:
DAS> Я правильно понял, что память под все переменные объявленные в функции будет выделена в момент вызова этой функции и освобождена в момент выхода из функции?
DAS> Это же относится и к методам/переменным, объявленным в методе класса?
Да.
Причем размер стека ограничен, поэтому большой локальный массив может вызвать проблемы.
LVV>>Уничтожение объектов и возврат памяти выполняется операцией delete, например
LVV>>delete p1;
LVV>>Естественно, указатель должен быть именно тот, который использовался при создании динамического объекта операцией new.
DAS> А вот так корректно делать:
DAS>DAS> int *p1 = new int();
DAS> int *p2 = p1;
DAS> delete p2;
DAS>
DAS> ?
Это классика — висячая ссылка. Было две ссылки на одну и ту же память. По одной из них память возвращена. Вторая "провисла".