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 –