Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekt ohne Rückstände aus Speicher löschen (https://www.delphipraxis.net/77218-objekt-ohne-rueckstaende-aus-speicher-loeschen.html)

St.Pauli 16. Sep 2006 15:05


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?

3_of_8 16. Sep 2006 15:09

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?

Dax 16. Sep 2006 15:10

Re: Objekt ohne Rückstände aus Speicher löschen
 
Kuck dir doch mal Delphi-Referenz durchsuchenTObject.InitInstance an ;)

@Drohne: Nein. Das täte es:
Delphi-Quellcode:
FillChar(PInteger(Self)^, InstanceSize, 0);

3_of_8 16. Sep 2006 15:12

Re: Objekt ohne Rückstände aus Speicher löschen
 
Zugegeben, das ist dann etwas leichter. :mrgreen:

Dax 16. Sep 2006 15:14

Re: Objekt ohne Rückstände aus Speicher löschen
 
Vor allem das einzig funktionierende ;)

St.Pauli 16. Sep 2006 15:19

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;

St.Pauli 16. Sep 2006 15:35

Re: Objekt ohne Rückstände aus Speicher löschen
 
OK, ich mache jetzt

Delphi-Quellcode:
procedure TMeineKlasse.FreeInstance;
begin
  FillChar(PInteger(self)^, InstanceSize, 0);
end;
Funktioniert, nur überschreibt es so wirklich alles mit 0?

3_of_8 16. Sep 2006 15:39

Re: Objekt ohne Rückstände aus Speicher löschen
 
Womit denn sonst? *kratz*

Dax 16. Sep 2006 15:47

Re: Objekt ohne Rückstände aus Speicher löschen
 
Delphi-Quellcode:
procedure TMeineKlasse.FreeInstance;
begin
  FillChar(PInteger(self)^, InstanceSize, 0);
  inherited;
end;
Sorum! Ansonsten wird der Speicher für das Objekt zwar überschrieben, aber nie freigegeben.

St.Pauli 16. Sep 2006 16:15

Re: Objekt ohne Rückstände aus Speicher löschen
 
Zitat:

Zitat von 3_of_8
Womit denn sonst? *kratz*

Mit der Frage "nur überschreibt es so wirklich alles mit 0?" stand nicht zur Debatte, ob es 0 oder x oder # in den Speicher schreibt, sondern ob es 0 im ganzen vom Objekt benutzten Speicher schreibt! :roll:

Zitat:

Zitat von Dax
Delphi-Quellcode:
procedure TMeineKlasse.FreeInstance;
begin
  FillChar(PInteger(self)^, InstanceSize, 0);
  inherited;
end;
Sorum! Ansonsten wird der Speicher für das Objekt zwar überschrieben, aber nie freigegeben.

Danke!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr.
Seite 1 von 2  1 2      

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