Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Records Strings und Speicherprobleme? (https://www.delphipraxis.net/55893-records-strings-und-speicherprobleme.html)

static_cast 28. Okt 2005 10:30


Records Strings und Speicherprobleme?
 
Hoi,

ich habe gerade erfahren das Stings in einem Record Probleme mit dem Speicher (beim freigeben) haben?

Delphi-Quellcode:
TTestRec = record
  Foo:String;
  Bar:String;
end;
man sollte das eher so lösen:

Delphi-Quellcode:
TTestRec = record
  Foo:String[100];
  Bar:String[100];
end;
oder so:

Delphi-Quellcode:
TTestRec = record
  Foo:PChar;
  Bar:PChar;
end;
Stimmt es, das bei der oben genannten Methode Speicherlecks entstehen? Ich habe davon noch nie gehört, oder bezieht sich das nur auf die Dynamische erstellung (mit New und Dispose) dieser Records?

MfG
Daniel

alzaimar 28. Okt 2005 10:47

Re: Records Strings und Speicherprobleme?
 
Soweit ich weiss, bekommst du mit der ersten und letzten Version nur dann Probleme, wenn Du den Speicher des Records anfässt, z.B. um ihn per WriteBuffer/Readbuffer in einen Stream zu schreiben/zu lesen.

Ansonsten dürfte das ziemlich Schnurz sein.

Bei allen Fragen bezüglich Speicherlecks etc. empfehle Ich Dir die unit FastMM (bei www.sourceforge.net).
Die ersetzt den Borland Memorymanager und zeigt Dir alle Speicherlecks an. Mit einem Compilerschalter siehst Du dann sogar die Zeile, wo das passiert. Die Unit ist so gut, das sie Borland übernommen hat.

static_cast 28. Okt 2005 11:01

Re: Records Strings und Speicherprobleme?
 
Also hat Delphi keine Probleme damit ein Record freizugeben in denen Strings verwendet wurden? Oder sonstige Macken mit Strings in Records? (Mir persönlich sind noch keine aufgefallen, aber wie erwähnt wurde es mir gesagt, und deswegen wollte ich das mal genauer wissen)

Danke für die Info's.

xaromz 28. Okt 2005 11:18

Re: Records Strings und Speicherprobleme?
 
Hallo,

bei der Benutzung von langen Strings in dynamischen Strukturen sollte man vor dem Freigeben der Strukturen mittels Delphi-Referenz durchsuchenFinalize den von den Strings belegten Speicherplatz freigeben. Ob das bei statischen Records auch nötig ist weiß ich nicht, aber schaden kann's ja nicht.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 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