![]() |
new(...) bei PAnsiChar?
Hi
Wenn ich eine Variable vom Typ PAnsiChar habe, spielt es anscheinend keine Rolle, ob ich diese mit new(variable) versehe oder nicht. Bei einem Record aber schon. Wieso ist das so? Hier der Quellcode:
Delphi-Quellcode:
type
TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TDaten = record name:string; end; PDaten = ^TDaten; var Form2: TForm2; daten:array of PDaten; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var text_s:string; text_p:PAnsiChar; begin text_s:='Irgendwas'; new(text_p); // sinnvoll oder nicht? text_p:=PAnsiChar(AnsiString(text_s)); setLength(daten,1); new(daten[0]); daten[0].name:='Trallala'; Form2.Caption:=WideString(text_p); // nur zum prüfen end; |
AW: new(...) bei PAnsiChar?
Nein. Ein Pchar ist ein Zeiger, der auf einen String zeigt. Du forderst mit dem new einen Speicherbereich von einen Char an ( 2 Byte) verwendest den Speicher aber nicht, weil der Zeiger anschliessend ja auf eine andere Speicheradresse umgebogen wird ( Adresse der Stringvariable).
Der ursprünglich angeforderte Speicherbereich wird nie freigegeben. |
AW: new(...) bei PAnsiChar?
Ah ok, vielen Dank.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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