Здравствуйте, KBH, Вы писали:
KBH>Объясните неразумному, а где утечка-то?
KBH>
KBH>class Foo
KBH>{
KBH>public:
KBH> Foo()
KBH> :m_pBar(new Bar)
KBH> ,m_pBaz(new Baz)
^^^^^^^
будет, если при втором выделении памяти кинется исключение
деструктор то не вызовется, т.к. объект еще не будет создан
KBH> {
KBH> }
KBH> ~Foo()
KBH> {
KBH> delete m_pBar;
KBH> delete m_pBaz;
KBH> }
KBH>private:
KBH> Bar *m_pBar;
KBH> Baz *m_pBaz;
KBH>};
KBH>
если бросит исключение конструктор Baz, то деструктор для Foo не позовется (потому что объект не создался), и память, выделенная new Bar, освобождена не будет.
Плюс, кроме потенциальной утечки памяти, описанной выше, присутствует потенциальное множественное удаление из-за возможности использования конструктора копирования и оператора присваивания по умолчанию.
Posted via RSDN NNTP Server 2.0
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Плюс, кроме потенциальной утечки памяти, описанной выше, присутствует потенциальное множественное удаление из-за возможности использования конструктора копирования и оператора присваивания по умолчанию.
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, Павел Кузнецов, Вы писали:
ПК>>Плюс, кроме потенциальной утечки памяти, описанной выше, присутствует потенциальное множественное удаление из-за возможности использования конструктора копирования и оператора присваивания по умолчанию.
B>Да, слона-то и не приметили...
Наоборот, он-то как раз в глаза и лез и мешал разглядеть утечку, мне, по крайней мере
Слишком сильный раздражитель