AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objekt ohne Rückstände aus Speicher löschen
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von St.Pauli · begonnen am 16. Sep 2006 · letzter Beitrag vom 16. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#1

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

  Alt 16. Sep 2006, 16:05
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?
Gruß St.Pauli
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 16. Sep 2006, 16:09
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?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

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

  Alt 16. Sep 2006, 16:10
Kuck dir doch mal Delphi-Referenz durchsuchenTObject.InitInstance an

@Drohne: Nein. Das täte es:FillChar(PInteger(Self)^, InstanceSize, 0);
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 16. Sep 2006, 16:12
Zugegeben, das ist dann etwas leichter.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

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

  Alt 16. Sep 2006, 16:14
Vor allem das einzig funktionierende
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#6

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

  Alt 16. Sep 2006, 16:19
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;
Gruß St.Pauli
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#7

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

  Alt 16. Sep 2006, 16:35
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?
Gruß St.Pauli
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

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

  Alt 16. Sep 2006, 16:39
Womit denn sonst? *kratz*
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

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

  Alt 16. Sep 2006, 16:47
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.
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#10

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

  Alt 16. Sep 2006, 17:15
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!

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!!!
Gruß St.Pauli
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz