如何在Delphi中为指向数组的指针保留内存?

che*_*r89 1 delphi pointers memory-management

我正在开发类来表示特殊类型的矩阵:

type
  DifRecord = record
    Field: String;
    Number: Byte;
    Value: smallint;
  end;

type
  TData = array of array of MainModule.DataRecord;

type
  TDifference = array of DifRecord;

type
  TFogelMatrix = class
  private
    M: Byte;
    N: Byte;
    Data: ^TData;
    DifVector: ^TDifference;
    procedure init(); 
  public
    constructor Create(Rows, Cols: Byte);
    destructor Destroy;
  end;
Run Code Online (Sandbox Code Playgroud)

现在在构造函数中,我需要为Data和DifVector类成员保留内存.正如您所见,我使用指向记录数组的指针.所以,主要的问题是,我该如何正确保留记忆?我想我不能使用类似的东西: 因为我失去了主要想法 - 在运行时保留内存空间,就像我想要的那样.感谢您的评论.
new(Data);
new(DifVector);

ang*_*son 10

由于您使用的是动态数组,array of因此应使用SetLength指定数组的长度,这可以动态完成.

即.像这样:

SetLength(Data, 100);
Run Code Online (Sandbox Code Playgroud)

这不会保留100个字节,但会保留足够的空间来容纳数组所拥有的任何类型的100个元素.

将数组的声明更改为简单数组:

Data: TData;
DifVector: TDifference;
Run Code Online (Sandbox Code Playgroud)

并使用它与SetLength,它应该做的伎俩.