我的代码具有以下说明的基本结构:
type
TDynamicArray = array of double ;
var
a : TDynamicArray ;
function Func : TDynamicArray ;
var
b : TDynamicArray ;
begin
SetLength (B, 3) ;
b [0] := 0.0 ;
b [1] := 1.0 ;
b [2] := 2.0 ;
Result := b ; // note 1 -- should use Result := Copy (b, 0, Length (b))
end ;
begin
a := Func ; // note 2 -- should we (or could we) use a := Copy (Func, 0, Length (Func))
end.
直到最近该函数开始返回空数组时,它一直运行良好。然后我发现了这一点,这让我意识到简单的分配是不正确的,我需要使用Copy
.
两个问题:
- 我意识到我需要在标记的行上“复制”
Note 1
以分配给函数结果。我是否Copy
还需要将函数结果分配给数组a
(行Note 2
)? - 为什么编译器允许我的构造以及编译后的代码实际上在做什么?
我意识到我可以尝试这些事情并看看,但我有点害怕编译器让有问题的东西通过。