Main Content

结构体数组的内存要求

结构体数组不要求完全连续的内存。但是,每个字段都要求连续的内存,MATLAB® 创建的用来描述数组的标头也要求连续的内存。对于大型数组,不断增加字段的数量或字段中元素的数量会导致 Out of Memory 错误。

通过使用 struct 函数预分配初始值来为这些内容预分配内存,例如

newStruct(1:25,1:50) = struct('a',ones(20),'b',zeros(30),'c',rand(40));

此代码创建并填充一个 25×50 的结构体数组 S,其中包含字段 abc

如果不希望分配初始值,可以通过为结构体数组中的最后一个元素的每个字段分配空数组来初始化结构体数组,例如

newStruct(25,50).a = [];
newStruct(25,50).b = [];
newStruct(25,50).c = [];

或者采用以下等效命令,

newStruct(25,50) = struct('a',[],'b',[],'c',[]);

但是,在这种情况下,MATLAB 仅为标头分配内存,而不为数组内容分配内存。

有关详细信息,请参阅: