Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Refcount meines Objektes geht zu früh auf 0 (https://www.delphipraxis.net/198318-refcount-meines-objektes-geht-zu-frueh-auf-0-a.html)

Schokohase 24. Okt 2018 16:03

AW: Refcount meines Objektes geht zu früh auf 0
 
Zitat:

Zitat von stahli (Beitrag 1416545)
Du darfst auch nicht folgendes machen:

Delphi-Quellcode:
procedure DoIt(Intf: IInterface);
begin
end;

...

DoIt(TMyClass.Create); // falsch!
In der ersten Variante kommt auch die Referenzzählung durcheinander.

Nein, kommt sie nicht. Das ist kein Problem

dummzeuch 24. Okt 2018 16:16

AW: Refcount meines Objektes geht zu früh auf 0
 
Zitat:

Zitat von Schokohase (Beitrag 1416551)
Zitat:

Zitat von stahli (Beitrag 1416545)
Du darfst auch nicht folgendes machen:

Delphi-Quellcode:
procedure DoIt(Intf: IInterface);
begin
end;

...

DoIt(TMyClass.Create); // falsch!
In der ersten Variante kommt auch die Referenzzählung durcheinander.

Nein, kommt sie nicht. Das ist kein Problem

Doch, es gab Compiler-Versionen, bei denen das schief ging. Ich bin mir allerdings gerade unsicher, ob das mit oder ohne const-Parameter war. Eines von beiden schlug fehl.

Schokohase 24. Okt 2018 16:22

AW: Refcount meines Objektes geht zu früh auf 0
 
Zitat:

Zitat von dummzeuch (Beitrag 1416557)
Zitat:

Zitat von Schokohase (Beitrag 1416551)
Zitat:

Zitat von stahli (Beitrag 1416545)
Du darfst auch nicht folgendes machen:

Delphi-Quellcode:
procedure DoIt(Intf: IInterface);
begin
end;

...

DoIt(TMyClass.Create); // falsch!
In der ersten Variante kommt auch die Referenzzählung durcheinander.

Nein, kommt sie nicht. Das ist kein Problem

Doch, es gab Compiler-Versionen, bei denen das schief ging. Ich bin mir allerdings gerade unsicher, ob das mit oder ohne const-Parameter war. Eines von beiden schlug fehl.

Ja, wenn die Methode so definiert ist
Delphi-Quellcode:
procedure DoIt(const Intf: IInterface);
begin
end;
dann wird der RefCount nicht erhöht und man hat bei
Delphi-Quellcode:
DoIt(TMyClass.Create);
ein Mem-Leak. Das ist auch heute noch so.

stahli 24. Okt 2018 16:42

AW: Refcount meines Objektes geht zu früh auf 0
 
Ok, solche Feinheiten hatte ich jetzt nicht mehr auf dem Zettel.
M.E. ist es immer sinnvoll, solche Konstrukte generell zu vermeiden (statt für jede Compilerversion und Parameter-Signatur zu prüfen, ob diese unter den Problemfall fällt oder nicht).

Schokohase 24. Okt 2018 16:55

AW: Refcount meines Objektes geht zu früh auf 0
 
Zitat:

Zitat von stahli (Beitrag 1416562)
Ok, solche Feinheiten hatte ich jetzt nicht mehr auf dem Zettel.
M.E. ist es immer sinnvoll, solche Konstrukte generell zu vermeiden (statt für jede Compilerversion und Parameter-Signatur zu prüfen, ob diese unter den Problemfall fällt oder nicht).

Es ist der
Delphi-Quellcode:
const
Parameter der den Unterschied macht, nicht die Compiler-Version, denn das Verhalten ist bei allen gleich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz