首页  编辑  

定义数组的一个有趣现象

Tags: /超级猛料/Language.Object Pascal/数组、集合和记录、枚举类型/   Date Created:

按照下面的方式定义数组

type

 TMyRecord=packed record

   F1,F2:integer;

   F3,F4:Word;

 end;

 TMyRecordArray = array[0..MaxInt div 2] of TMyRecord;

 PMyRecordArray = ^TMyRecordArray;

编译器会提示你数组太大,超过2GB,如果你该成MaxInt div 20,不会提示你数组太大,但是编译也不能通过,经过验证,记录占用内存越大,数组上限越小,否则无法编译,不过编译错误信息很奇怪的。

所以一般应该这样定义:

 TMyRecordArray = array[0..MaxInt div SizeOf(TMyRecord) - 1] of TMyRecord;