1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- { %Fail }
- { new with type of size > 2Gb }
- { Source provided for Free Pascal Bug Report 2053 }
- { Submitted by "Luis Castedo" on 2002-07-24 }
- { e-mail: [email protected] }
- program tb2;
- {$MODE TP}
- {$C+}
- type
- PosInteger = 0 .. high(integer);
- Posptrint = 0 .. high(ptrint);
- TMyRecord = record
- mr_sglDummy1: array[0..3] of Single;
- mr_lDummy2 : ptrint;
- mr_iDummy3 : Integer;
- mr_iDummy4 : Integer;
- end;
- TMyRecordArray = array[PosInteger] of TMyRecord;
- TMyLongRecordArray = array[ptrint] of TMyRecord;
- PMyRecordArray = ^TMyRecordArray;
- PMyLongRecordArray = ^TMyLongRecordArray;
- var
- pArray: PMyRecordArray;
- pLongArray : PMyLongRecordArray;
- size : ptrint;
- begin
- new(parray);
- new(pLongArray);
- size:= 50 * SizeOf(TMyRecord);
- GetMem(pArray, size);
- FillChar(pArray^,size,#0);
- GetMem(pLongArray, 50 * SizeOf(TMyRecord));
- FillChar(pLongArray^,size,#0);
- Assert(Assigned(pArray));
- WriteLn('pArray = ', ptrint(pArray));
- WriteLn('@(pArray^[0]) = ', ptrint(@(pArray^[0])));
- pArray^[0].mr_lDummy2 := 24;
- if (pArray^[0].mr_lDummy2<>24) then
- begin
- Halt(1);
- end;
- WriteLn('pLongArray = ', ptrint(pLongArray));
- WriteLn('@(pLongArray^[0]) = ', ptrint(@(pLongArray^[0])));
- pLongArray^[0].mr_lDummy2 := 25;
- if (pLongArray^[0].mr_lDummy2<>25) then
- begin
- Halt(1);
- end;
- FreeMem(pArray, size);
- FreeMem(pLongArray, size);
- end.
|