Re: std:stack вызов деструктора
От: Pasternak  
Дата: 23.06.08 13:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вопрос, как вызвать деструкторы объектов размещенных

А>в 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(); 
    //утечек больше не будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.