Здравствуйте, Аноним, Вы писали:
А>Вопрос, как вызвать деструкторы объектов размещенных
А>в std:stack чтобы не было утечки памяти. Спасибо.
А>А>class A{
А> int a;
А>public:
А> A(int i=77 ): a(i) {}
А> ~A(){ cout<<"~A"<<a<<endl; }
А>};
А>int main(){
А> int d[]={45,34,56,27,71,50,62};
А> {
А> stack <A> s1;
А> A a1, a2(88), a3(99);
А> s1.push(a1); s1.push(a2); s1.push(a3);
А> s1.pop();//вызвался деструктор
А> }//вызвались встальные деструкторы
А> {
А> stack <A*> s2;
А> s2.push(new A);
А> s2.push(new A(88));
А> s2.push(new A(99));
А> s2.pop();//утечка 1 ????
А> }//утечка остальных ????
А>
Использовать boost::shared_ptr
stack <boost::shared_ptr<A> > s2;
...
s2.pop();
//утечек больше не будет