Zitat von
Hansa:
Ne, nichts umgestellt. Warum auch ? Die Screenshots wurden produziert mit Projektoptionen-Checkbox "Huge-Strings" angehakt. Mache ich aus dem string [10] nur string, dann gehts genauso. @DeddyH
Ich würde mal sagen: Damit wäre
Zitat von
Neutral General:
Mir scheint, als hätte er nicht verstanden, worum es hier in dieser Diskussion geht.
bewiesen
Natürlich wird der String auch ohne Finalize zu einem Leerstring. Allerdings hinterlässt du ein MemoryLeak.
Du machst quasi folgendes:
Delphi-Quellcode:
var pc: PChar;
begin
GetMem(pc,6);
// mit PChar arbeiten
pc := nil; // = FillChar(String,SizeOf(String),0);
end;
Ich denke du siehst, dass obiger Code ein MemoryLeak verursacht. Richtig wäre es so:
Delphi-Quellcode:
var pc: PChar;
begin
GetMem(pc,6);
// mit PChar arbeiten
FreeMem(pc); // Finalize(RecordmitString);
pc := nil; // = FillChar(RecordmitString,SizeOf(TRecordmitString),0);
end;
Ich hoffe, du hast jetzt verstanden worum es geht. Im Endeffekt ist pc immer nil. Das Ergebnis ist
scheinbar das Gleiche.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."