相关疑难解决方法(0)

Delphi中的数组和压缩数组有什么区别吗?

在C/C++中你总是有

SizeOf(array[N] of T) = N * SizeOf(T);
Run Code Online (Sandbox Code Playgroud)

在Pascal/Delphi中,您可以使用'packed array'来确保上面的断言是正确的,但'packed'说明符对Delphi中的数组有什么实际价值吗?我无法创建一个'unpacked'数组的例子,数组似乎总是'打包':

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;
Run Code Online (Sandbox Code Playgroud)

(C/C++结构和Delphi记录是不同的 - 它们可以'解包',因此由于字段的对齐,结构的大小大于字段大小的总和.)

arrays delphi alignment packed

15
推荐指数
1
解决办法
4551
查看次数

标签 统计

alignment ×1

arrays ×1

delphi ×1

packed ×1