В C / C ++ у вас всегда есть
SizeOf(array[N] of T) = N * SizeOf(T);
В Pascal / Delphi вы можете использовать «упакованный массив», чтобы убедиться, что приведенное выше утверждение истинно, но имеет ли спецификатор «упакованный» какое-либо практическое значение для массивов в Delphi? Я не могу создать пример «распакованного» массива, массивы кажутся всегда «упакованными»:
type
A = array[0..2] of Byte;
B = array[0..99] of A;
C = packed record
C1, C2, C3: Byte;
end;
D = array[0..99] of C;
procedure TForm10.Button1Click(Sender: TObject);
begin
Assert(SizeOf(A) = 3);
Assert(SizeOf(B) = 300);
Assert(SizeOf(D) = 300);
end;
(Структуры C / C ++ и записи Delphi разные - их можно «распаковать», чтобы размер структуры был больше суммы размеров полей из-за выравнивания полей. )