1
如果有这样的记载:新的动态尺寸记录
type myType=record
a : array of byte;
end;`
pMyType=^myType;
我能得到这个内存,而无需调用getMem
并没有通过自己计算大小?
我喜欢用New
但我在哪里指定的长度为a
?
如果有这样的记载:新的动态尺寸记录
type myType=record
a : array of byte;
end;`
pMyType=^myType;
我能得到这个内存,而无需调用getMem
并没有通过自己计算大小?
我喜欢用New
但我在哪里指定的长度为a
?
好的,
New
创建a
的0初始大小的SetLength
改变运行时所使用的存储器中的记录。
无论您用于记录初始化的方式,您都必须手动设置数组字段长度。你可以在你的问题中加入Delphi版本标签吗? – TLama
在我叫'New'之前?这是线程安全的吗? –
不,刚创建变量之后。假设你有一个像MyRecord:PMyType这样的变量来在内存中创建你调用New(MyRecord)的变量。之后,数组字段将具有0长度,因为它是一种托管类型。要设置该数组字段的长度,您仍然必须在创建变量后的某个地方调用像这样的'SetLength(MyRecord.a,10);'。呃,线程安全的?这只是一个内存分配。如果你问是否可以在线程中调用'New',那么是的,它是。 [附注:我会在几分钟内从这里删除我的评论以清理*工作区*] – TLama