Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Aleksey Cheusov                      2:5020/400     04 Feb 2003  20:24:15
 To : Valentin Nechayev
 Subject : Re: 386SX and RedHat_8.0
 -------------------------------------------------------------------------------- 
 
 Valentin Nechayev <netch@segfault.kiev.ua> writes:
 
 > >>> Aleksey Cheusov wrote:
 > 
 > > VW>> Вопрос - кто в данном случае освободит динамическую память, в
 > > VW>> которой размещен объект foo? Данным называется случай, когда
 > > VW>> foo->SomeMethod выкинул exception.
 > >> Это штатная проблема и для неё есть штатные методы решения.
 > >> Hапример, auto_ptr. Идёт в стандартной библиотеке, кажется.
 > AC> Если класс создаётся и удаляется в пределах одной функции, то
 > AC> IMHO нечего его в хипе создавать. auto ничем не хуже (ну разьве
 > AC> что efence может не сработать) и избавляет от проблем с
 > AC> неожиданными exceptions. В итоге код получается пости такой же
 > AC> как в языках с garbage collector.
 > 
 > Представьте себе там не new(), а некоторую внешнюю функцию, которая
 > возвращает, например, указатель на строку.
 
 Представил. Только такой API скорее свойственен plain C,
 а не C++ и тогда не понятно, откуда там new возьмётся.
 А для подобных malloc-based Сишных API try/catch всё равно нужен.
 К тому же от auto_ptr было бы больше толку, если бы в нём был
 банальный reference counter, а не ownership indicator.
 
 [skipped]
 
 >  auto_ptr<zuka> z; ... z.reset(read_zuka()); ... z.release();
 > 
 > (Я не уверен, что reset() и release() везде есть. Я их увидел в
 > SGI'шной доке. Если их нет, надо написать свой аналог.)
 
 В MSVC reset() нет, но суть не в этом.
 
 > AC> напиши корректный clear/destructor и никогда у тебя не будет
 > AC> проблем с memory leaks.
 > 
 > Слово "никогда" здесь следует считать преувеличением.
 
 Hу да.
 Временные файлы после ^C остаются.
 tmpfile (3) - единственный способ это исправить?
 И вообще, какие есть способы кроме как хранить
 глобальный список временных файлов
 и писать обработчики событий.
 
 > Hе всё API согласовано с C++. Более того, в юниксах этого не следует
 > ожидать совсем, никогда.
 
 Это я уже понял.
 Даже банального extern "C" можно и не увидеть.
 Благо, в open source это легко исправляется.
 
 > >> Hу и? Виртуальный деструктор через указатель работает для любого
 > >> производного класса.
 > AC> Если pure abstract class совсем даже не pure, а совсем наоборот,
 > AC> и содержит виртуальный деструктор, то, конечно, да.
 > 
 > А что, в Вашей терминологии класс с виртуальным деструктором не
 > может быть pure abstract?
 > А если этот деструктор тоже абстрактный? Такое ведь разрешено.
 
               ^^^^^^^^^^      ^^^^^^^^^^^
 Ой. А что это? Приведи пример. Что-то я не могу этого себе представить.
 IMHO pure abstract class должен описывать функциональность,
 а не способ создания/удаления себя, т.е. деструктора там быть не должно.
 Создание/Удаление объектов происходит, в общем случае, совсем не там,
 где классы могут используются.
 
 > AC> В мелкомягком COM для этого есть для этого специальная функция
 > AC> типа ReleaseInstance или как-то так с reference counter-ом
 > AC> внутри. Hу, это для того быть pure abstract.
 > 
 > Переведи. (c)
 
 А что тут переводить?
 За создание объектов отвечает class factory.
 Приложение (клиент) говорит CoCreateInstance с id
 и получает указатель на интерфейс.
 Работает с ним и в конце говорит ReleaseInstance.
 Количество клиентов считается и, если после вызова
 ReleaseInstance становится равным нулю, объект делает
 delete *this.
 Примерно так.
 
 -- 
 Best regards, Aleksey Cheusov.
 --- ifmail v.2.15dev5
  * Origin: Science Soft (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 386SX and RedHat_8.0   Igor   29 Jan 2003 09:36:05 
 Re: 386SX and RedHat_8.0   Oleg Drokin   29 Jan 2003 11:16:55 
 Re: 386SX and RedHat_8.0   Igor   29 Jan 2003 15:48:26 
 Re: 386SX and RedHat_8.0   Oleg Drokin   29 Jan 2003 22:45:42 
 Re: 386SX and RedHat_8.0   Igor   30 Jan 2003 08:52:47 
 Re: 386SX and RedHat_8.0   Oleg Drokin   30 Jan 2003 11:30:54 
 Re: 386SX and RedHat_8.0   Igor   30 Jan 2003 12:28:04 
 Re: 386SX and RedHat_8.0   Oleg Drokin   30 Jan 2003 12:48:34 
 Re: 386SX and RedHat_8.0   Dmitry Ponyatov   30 Jan 2003 23:20:16 
 Re: 386SX and RedHat_8.0   Dmitry Ponyatov   30 Jan 2003 20:04:34 
 Re: 386SX and RedHat_8.0   Vladimir Bormotov   29 Jan 2003 23:40:53 
 Re: 386SX and RedHat_8.0   Igor   30 Jan 2003 09:14:05 
 Re: 386SX and RedHat_8.0   Vladimir Bormotov   30 Jan 2003 14:45:02 
 Re: 386SX and RedHat_8.0   Victor Wagner   30 Jan 2003 15:08:33 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   30 Jan 2003 17:19:46 
 Re: 386SX and RedHat_8.0   Victor Wagner   30 Jan 2003 18:29:08 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 14:25:22 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 14:31:34 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 15:35:07 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 16:00:15 
 Re: 386SX and RedHat_8.0   Eugene Karpachov   31 Jan 2003 16:50:52 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 17:07:41 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 17:24:32 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 23:14:44 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   03 Feb 2003 16:54:23 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   04 Feb 2003 20:24:15 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   04 Feb 2003 21:27:58 
 Re: 386SX and RedHat_8.0   Alexander S. Usov   05 Feb 2003 03:03:55 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   05 Feb 2003 12:10:04 
 Re: 386SX and RedHat_8.0   Alexander S. Usov   05 Feb 2003 16:17:41 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   05 Feb 2003 12:04:25 
 Re: 386SX and RedHat_8.0   Alexander S. Usov   05 Feb 2003 16:37:11 
 Re: 386SX and RedHat_8.0   Eugene Karpachov   05 Feb 2003 10:37:11 
 Re: 386SX and RedHat_8.0   Eugene Karpachov   31 Jan 2003 17:25:33 
 Re: 386SX and RedHat_8.0   Alex Korchmar   31 Jan 2003 23:13:43 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   01 Feb 2003 00:18:25 
 Re: 386SX and RedHat_8.0   Alex Korchmar   01 Feb 2003 01:01:12 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   03 Feb 2003 16:54:21 
 Re: 386SX and RedHat_8.0   Vasily Tchekalkin   31 Jan 2003 18:36:59 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 17:24:31 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 17:09:43 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 17:14:17 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 22:10:07 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 17:14:48 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 17:23:00 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 17:44:55 
 Re: 386SX and RedHat_8.0   Oleg Drokin   31 Jan 2003 18:35:56 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 19:23:30 
 Re: 386SX and RedHat_8.0   Oleg Drokin   31 Jan 2003 19:34:36 
 Re: 386SX and RedHat_8.0   Oleg Drokin   31 Jan 2003 18:15:27 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 18:51:22 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 22:14:43 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 16:29:54 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 16:57:59 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   31 Jan 2003 17:14:49 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 17:14:48 
 Re: 386SX and RedHat_8.0   Eugene Karpachov   31 Jan 2003 17:30:37 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 17:44:25 
 Re: 386SX and RedHat_8.0   Eugene Karpachov   31 Jan 2003 19:06:42 
 Re: 386SX and RedHat_8.0   Valentin Nechayev   31 Jan 2003 19:37:41 
 Re: 386SX and RedHat_8.0   Eugene Karpachov   31 Jan 2003 23:25:34 
 Re: 386SX and RedHat_8.0   Aleksey Cheusov   01 Feb 2003 00:00:03 
 Re: 386SX and RedHat_8.0   Victor Wagner   01 Feb 2003 00:50:57 
 Re: 386SX and RedHat_8.0   Artem Chuprina   30 Jan 2003 20:43:48 
 Re: 386SX and RedHat_8.0   Igor   30 Jan 2003 15:59:29 
 Re: 386SX and RedHat_8.0   Victor Wagner   30 Jan 2003 16:31:40 
 Re: 386SX and RedHat_8.0   Vladimir Bormotov   30 Jan 2003 17:17:13 
 Re: 386SX and RedHat_8.0   Zahar Kiselev   31 Jan 2003 01:50:02 
 Re: 386SX and RedHat_8.0   Igor   31 Jan 2003 09:23:41 
 Re: 386SX and RedHat_8.0   Zahar Kiselev   31 Jan 2003 01:17:12 
 Re: 386SX and RedHat_8.0   Igor   31 Jan 2003 09:55:18 
 386SX and RedHat_8.0   Svyatoslav Abramenkov   31 Jan 2003 10:50:45 
 Re: 386SX and RedHat_8.0   Victor Wagner   31 Jan 2003 16:27:21 
 386SX and RedHat_8.0   Svyatoslav Abramenkov   31 Jan 2003 20:40:43 
 386SX and RedHat_8.0   Zahar Kiselev   01 Feb 2003 16:18:00 
 Re: 386SX and RedHat_8.0   Ian Dichkovsky   31 Jan 2003 18:23:06 
 386SX and RedHat_8.0   Nikolay Popov   12 Feb 2003 00:54:14 
 386SX and RedHat_8.0   Dmitry Novikov   30 Jan 2003 21:07:15 
 Re: 386SX and RedHat_8.0   Vladimir Bormotov   31 Jan 2003 15:07:31 
 Re: 386SX and RedHat_8.0   Igor Sysoev   05 Feb 2003 20:28:53 
 Re: 386SX and RedHat_8.0   Oleg Drokin   05 Feb 2003 22:14:03 
 Re: 386SX and RedHat_8.0   Igor Sysoev   06 Feb 2003 01:20:35 
 Re: 386SX and RedHat_8.0   Oleg Drokin   06 Feb 2003 10:42:43 
 Re: 386SX and RedHat_8.0   Igor Sysoev   06 Feb 2003 14:03:21 
 Re: 386SX and RedHat_8.0   Oleg Drokin   06 Feb 2003 15:18:57 
 Re: 386SX and RedHat_8.0   Igor Sysoev   06 Feb 2003 17:46:51 
 Re: 386SX and RedHat_8.0   Oleg Drokin   06 Feb 2003 18:39:10 
 Re: 386SX and RedHat_8.0   Roman Belenov   06 Feb 2003 19:52:12 
 Re: Re: 386SX and RedHat_8.0   Alexandr S. Agranovsky   06 Feb 2003 22:48:30 
 Re: 386SX and RedHat_8.0   Alexandr S. Agranovsky   29 Jan 2003 22:35:32 
 Re: 386SX and RedHat_8.0   Dmitry Ponyatov   30 Jan 2003 20:02:52 
Архивное /ru.linux/17283565a8051.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional