gpt4 book ai didi

delphi - Delphi动态数组分配给临时本地动态数组变量

转载 作者:行者123 更新时间:2023-12-03 19:13:35 25 4
gpt4 key购买 nike

我对新发布的delphi 10.2有问题,新的编译器在显示错误时

var 
FGlobalVar: array of integer;

procedure SomeProc()
var
ALocalVar: array of integer;
begin
ALocalVar := Pointer(FGlobalVar); {assign dynamic array}
{Do Something}
end;


在以前的版本中,delphi编译器不显示任何错误。

最佳答案

该代码永远不应该编译,并且东京关闭了漏洞。该转换的问题在于可以绕过引用计数。您所拥有的代码不会遇到这个问题,但是如果强制转换是写在作业的左侧,则不会引用。

Pointer(LocalVar) := GlobalVar;


这样写, LocalVar被分配了对动态数组的引用,但是引用计数没有增加。我很欣赏您的代码不是这样编写的,但是我相信这就是开发人员选择进行更改的原因。

无论如何,如果您使用兼容的类型,则无需在此处进行强制转换。切换到 TArray<Integer>,并且不需要强制转换。此外,您的代码将能够与通用方法进行交互。

关于delphi - Delphi动态数组分配给临时本地动态数组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44214956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com