在Delphi中,静态数组,编译器会自动检测下标是否越界,动态数组,不会自动检测。
注意:delphi中数组的下标索引是从0开始的,也就是说,如果数组长度为2,则下标索引分别为0,1
procedure TestArray;
var
arr1: array[0..2] of byte; //静态数组
arr2: array of byte;//动态数组
begin
//静态数组
arr1[0] := 1;
arr1[1] := 2;
arr1[2] := 3;
arr1[3] := 4; //这一行不能编译通过,会提示下标越界
//动态数组
SetLength(arr2, 3);
arr2[0] := 1;
arr2[1] := 2;
arr2[2] := 3;
arr2[3] := 4; //这一行能编译通过,但是已经造成了内存泄露,要谨防这样使用
end;