![]() |
Objekt ohne Rückstände aus Speicher löschen
Ich möchte in meiner Basisklasse eine Funktion implementieren, die beim Zerstören der Klasse den kompletten zugewiesenen Speicher auf 0 setzt.
Ist das möglich? Wenn ja, wie kann ich an die Sache herangehen? |
Re: Objekt ohne Rückstände aus Speicher löschen
Du müsstest die Größe der Klasse herausbekommen und dann Einfach alle Bytes von @Self bis PByte(Integer(@Self)+GRÖßE)^ mit 0en überschreiben. Andere Frage: Wozu brauchst du das?
|
Re: Objekt ohne Rückstände aus Speicher löschen
Kuck dir doch mal
![]() @Drohne: Nein. Das täte es:
Delphi-Quellcode:
FillChar(PInteger(Self)^, InstanceSize, 0);
|
Re: Objekt ohne Rückstände aus Speicher löschen
Zugegeben, das ist dann etwas leichter. :mrgreen:
|
Re: Objekt ohne Rückstände aus Speicher löschen
Vor allem das einzig funktionierende ;)
|
Re: Objekt ohne Rückstände aus Speicher löschen
Das Problem ist, dass ich die Methode um den Speicher zu überschreiben im Free der Klasse haben will, also nach dem Motto:
Delphi-Quellcode:
destructor TMeinObjekt.Free;
begin JetztLöscheDichSelbst(); end; |
Re: Objekt ohne Rückstände aus Speicher löschen
OK, ich mache jetzt
Delphi-Quellcode:
Funktioniert, nur überschreibt es so wirklich alles mit 0?
procedure TMeineKlasse.FreeInstance;
begin FillChar(PInteger(self)^, InstanceSize, 0); end; |
Re: Objekt ohne Rückstände aus Speicher löschen
Womit denn sonst? *kratz*
|
Re: Objekt ohne Rückstände aus Speicher löschen
Delphi-Quellcode:
Sorum! Ansonsten wird der Speicher für das Objekt zwar überschrieben, aber nie freigegeben.
procedure TMeineKlasse.FreeInstance;
begin FillChar(PInteger(self)^, InstanceSize, 0); inherited; end; |
Re: Objekt ohne Rückstände aus Speicher löschen
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr. |
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-2025 by Thomas Breitkreuz