Ich probiere grad ein bisschen GetMem/Initialize und FreeMem/Finalize aus und wollte gerne mal wissen, ob:
1. der Speicher richtig wieder freigegeben wurde?
2. ich Initialize/Finalize richtig verwendet habe?
Code:
Type
PRec1 = ^TRec1;
TRec1 = packed record
a: Byte;
b: String;
end;
PRec2 = ^TRec2;
TRec2 = packed record
b: Integer;
c: String;
end;
procedure TForm1.Button1Click(Sender: TObject);
var p1, p2: Pointer;
begin
GetMem(p1, SizeOf(TRec1) + SizeOf(TRec2));
p2:=Pointer(Integer(p1) + SizeOf(TRec1));
Initialize(PRec1(p1)^.b);
Initialize(PRec2(p2)^.c);
PRec1(p1)^.b:='Text1';
PRec2(p2)^.c:='Text2';
Finalize(PRec1(p1)^.b);
Finalize(PRec2(p2)^.c);
FreeMem(p1, SizeOf(TRec1) + SizeOf(TRec2));
end;