プログラムProject1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
ints: array[1..2] of Integer = (0,0);
i : Integer;
begin
ints[5] := 10; // doesn't compile
i := 5;
ints[i] := 10; // Seems to works
Writeln(ints[i]); // and even display the value
Readln;
end.
配列に境界を設定しましたints
。
通常、境界付き配列に値を設定する前に、をチェックしLow(ints)
ます...しかし、別のコードHigh(ints)
を探していたときに、境界の外側でインデックスを使用でき、例外が発生しないことに気付きました。 ..。。
なぜそれが機能するのか、そしてその結果はどうなるのか知りたいのですが?(たとえば、メモリのこの部分が予約されておらず、破損する可能性がある場合は、...)
他の質問を検索しましたが、良い質問が見つかりませんでした...存在する場合は、遠慮なくリンクを配置して、これを閉じてください。ありがとうございます。