![]() |
StrDispose nil?
Wenn ich einen String (PAnsiChar) mit StrDispose freigebe ist es nötig anschließend den String auf NIL zu setzen?
Oder kann man sich das sparen.
Delphi-Quellcode:
Filename enthält ja immer noch seltsame Zeichen nach Dispose.
if Assigned(FileName) then
begin StrDispose(FileName); FileName := nil; // <<< end; |
AW: StrDispose nil?
Der Ablauf ist: Reservierung mit StrAlloc oder StrNew, Verwendung der Variablen und dann StrDispose zur Freigabe. Mehr musst du nicht machen.
Der Pointer zeigt aber weiter auf den Speicherbereich, nur dass er nicht mehr gültig ist. Der Speicher wird bei der Freigabe aber ja nicht unbedingt sofort überschrieben. Siehe auch in der Doku: ![]() |
AW: StrDispose nil?
Ich nehme an, Filename ist PAnsiChar oder PWideChar?
Notwendig ist es nicht, aber für das Debuggen ggf. ganz hilfreich. Nach Freigabe mit StrDispose zeigt der Zeiger halt ins digitale Nirvana. Erstellt wurde Filename mit StrNew? |
AW: StrDispose nil?
Zitat:
Zitat:
Zitat:
Ok. Denke kann nicht falsch sein wenn ich ihn auf NIL setze dann weis ich das er leer ist. Hat mich einfach mal interessiert. |
AW: StrDispose nil?
Zitat:
Ist aber wohl mehr eine philosophische Frage: to NIL or not to NIL. Da gibt es wohl zwei verhärtete Lager, suche einfach mal nach Diskussionen um FreeAndNil ... |
AW: StrDispose nil?
Zitat:
Wie will man mit dem Kauderwelsch der dann noch im String enthalten ist etwas vergleichen. Aussichtslos |
AW: StrDispose nil?
Das nil steht für "ungültiger Zeiger",
dann sollte man auf keinen Fall mit dem StringPointer in irgendeiner Weise arbeiten, weil ein Object dazu nicht existiert und er wie schon geschrieben ins Nirvana zeigt. Ist der Zeiger <> nil dann kann man damit arbeiten. Dafür ist das nil gedacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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