【发布时间】:2014-04-08 06:51:40
【问题描述】:
昨天我发生了一些内存损坏,我非常怀疑某些记录数组是如何被分配和解除分配的。这是演示的简短版本:
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;
我很确定我做的不对,任何建议都将不胜感激。
【问题讨论】:
标签: delphi delphi-xe4