의 레코드에 메모리를 올바르게 할당/해제했습니다. 어제 메모리 손상이 발생했으며 일부 레코드 배열이 할당 및 할당 해제되는 방법에 대해 많은 의구심을 갖고 있습니다. 이것은 demostration에 대한 짧은 버전입니다 :고정 배열
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 –