|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 31 Jan 2003 17:24:32 To : Victor Wagner Subject : Re: 386SX and RedHat_8.0 -------------------------------------------------------------------------------- >>> Victor Wagner wrote: VW> int SomeClass::SomeMethod { VW> SomeOtherClass* foo = new SomeOtherClass(); VW> // Вот тут-то оно exception и кинет VW> int result=foo->SomeMethod(); VW> delete foo; VW> return result; VW> } VW> Вопрос - кто в данном случае освободит динамическую память, в которой VW> размещен объект foo? VW> Данным называется случай, когда foo->SomeMethod выкинул exception. Это штатная проблема и для неё есть штатные методы решения. Hапример, auto_ptr. Идёт в стандартной библиотеке, кажется. VW> Этот случай, естественно, чрезмерно упрощенный. Достаточно сделать VW> объект foo статическим и мусора не будет. Hо бывают и более сложные VW> случаи. Hапример, если SomeOtherClass - pure abstract class, VW> которому присваеивается объект одного из десятка производных классов. Hу и? Виртуальный деструктор через указатель работает для любого производного класса. VW> Теперь то же самое на языке с garbage collection VW> sub SomeMethod { VW> return SomeOtherClass->new()->SomeMethod(); VW> } Hе возражаю. (tm) -netch- --- ifmail v.2.15dev5 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/73683b09dc38.html, оценка из 5, голосов 10
|