169 похожих чатов

Спецы по лазарю, может кто нить пояснить в чем прикол

с fdestroycount
function TInterfacedObject._Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};

begin
_Release:=interlockeddecrement(frefcount);
if _Release=0 then
begin
if interlockedincrement(fdestroycount)=1 then // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
self.destroy;
end;
end;
Этот fdestroycount нигде не используется кроме _Release. Зачем он ?? Так как он нигде не используется, то когда frefcount станет равным нулю, то interlockedincrement(fdestroycount) в любом случае будет равен 1. И зачем всё это ?

4 ответов

21 просмотр

вопрос в чем? зачем вообще делать защиту от дурака?

Iluha Companets
вопрос в чем? зачем вообще делать защиту от дурака...

ок, т.е. вопрос ради вопроса.. ты глянь исходники в mingw например, там такого гора

В делфи вон оно как сделано class procedure TInterfacedObject.__MarkDestroying(const Obj); var LRef: Integer; begin repeat LRef := TInterfacedObject(Obj).FRefCount; until AtomicCmpExchange(TInterfacedObject(Obj).FRefCount, LRef or objDestroyingFlag, LRef) = LRef; end;

protected frefcount : longint; FDestroyCount : longint; FDestroyCount protected, так что вполне могут быть варианты

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта