2
昨天我有一些内存损坏正在进行,我非常怀疑某些记录数组是如何分配和释放的。这是演示的简短版本:正确地为静态数组中的记录分配/释放内存
type
TMyRecord = record
W: word;
S: String;
end;
TMyRecordArray = array [1 .. 315] of TMyRecord;
TArrayPointer = ^TMyRecordArray;
var
PageBase: TArrayPointer;
procedure TTestForm.FormCreate(Sender: TObject);
var
iRecord: TMyRecord;
begin
PageBase := AllocMem(SizeOf(TMyRecordArray));
iRecord.W := 1;
iRecord.S := 'TEST';
PageBase^[1] := iRecord;
end;
procedure TTestForm.FormDestroy(Sender: TObject);
begin
PageBase^[1] := Default (TMyRecord);
FreeMem(TPageBase);
end;
我很确定我没有这样做,任何建议,将不胜感激。
谢谢,这是非常丰富的。 – Walter78
可爱的答案+ 1 –