我正在开发类来表示特殊类型的矩阵:
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;
现在在构造函数中,我需要为Data和DifVector类成员保留内存.正如您所见,我使用指向记录数组的指针.所以,主要的问题是,我该如何正确保留记忆?我想我不能使用类似的东西:
因为我失去了主要想法 - 在运行时保留内存空间,就像我想要的那样.感谢您的评论.
new(Data);
new(DifVector);
由于您使用的是动态数组,array of
因此应使用SetLength指定数组的长度,这可以动态完成.
即.像这样:
SetLength(Data, 100);
这不会保留100个字节,但会保留足够的空间来容纳数组所拥有的任何类型的100个元素.
将数组的声明更改为简单数组:
Data: TData; DifVector: TDifference;
并使用它与SetLength,它应该做的伎俩.