2013-10-06 39 views
1

如果有这样的记载:新的动态尺寸记录

type myType=record 
     a : array of byte; 
    end;` 
    pMyType=^myType; 

我能得到这个内存,而无需调用getMem并没有通过自己计算大小?

我喜欢用New但我在哪里指定的长度为a

+0

无论您用于记录初始化的方式,您都必须手动设置数组字段长度。你可以在你的问题中加入Delphi版本标签吗? – TLama

+0

在我叫'New'之前?这是线程安全的吗? –

+0

不,刚创建变量之后。假设你有一个像MyRecord:PMyType这样的变量来在内存中创建你调用New(MyRecord)的变量。之后,数组字段将具有0长度,因为它是一种托管类型。要设置该数组字段的长度,您仍然必须在创​​建变量后的某个地方调用像这样的'SetLength(MyRecord.a,10);'。呃,线程安全的?这只是一个内存分配。如果你问是否可以在线程中调用'New',那么是的,它是。 [附注:我会在几分钟内从这里删除我的评论以清理*工作区*] – TLama

回答

1

好的,

New创建a的0初始大小的SetLength改变运行时所使用的存储器中的记录。