gpt4 book ai didi

Delphi:使用 System.New() 代替局部变量除了节省少量内存之外还有什么优点?

转载 作者:行者123 更新时间:2023-12-03 14:42:23 26 4
gpt4 key购买 nike

让我们回到基础知识。坦白说,我以前从未使用过 NewDispose 函数。然而,当我读完the New() documentation and the included examples后上Embarcadero Technologies的网站和 Delphi Basics explanation of New() ,它在我的脑海中留下了疑问:

使用 System.New() 而不是局部变量,除了节省少量内存之外,还有哪些优点?

New() 的常见代码示例大致如下:

  var
pCustRec : ^TCustomer;
begin
New(pCustRec);
pCustRec^.Name := 'Her indoors';
pCustRec^.Age := 55;
Dispose(pCustRec);
end;

上面的代码在什么情况下比下面的代码更合适?

  var
CustRec : TCustomer;
begin
CustRec.Name := 'Her indoors';
CustRec.Age := 55;
end;

最佳答案

如果您可以使用局部变量,请这样做。这是一条几乎没有异常(exception)的规则。这会产生最干净、最高效的代码。

如果需要在堆上分配,请使用动态数组、GetMem 或 New。分配记录时使用New。

无法使用堆栈的示例包括编译时大小未知的结构或非常大的结构。但对于记录(New 的主要用例)来说,这些担忧很少适用。

因此,如果您面临在记录时使用堆栈还是堆的选择,那么堆栈始终是正确的选择。

关于Delphi:使用 System.New() 代替局部变量除了节省少量内存之外还有什么优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14228746/

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