gpt4 book ai didi

delphi - 函数应该返回一条记录还是一个指针?

转载 作者:行者123 更新时间:2023-12-03 15:42:57 30 4
gpt4 key购买 nike

假设我有一个“重”记录,例如包含多个动态值数组。我这样声明:

PMyHugeRecord^ = TMyHugeRecord;
TMyHugeRecord = record
AFirstArray: TSingleDynArray;
// many many others
...
ALastArray: TSingleDynArray;
end;

当处理发生在函数中时,函数的结果应该被键入为指针,还是可以返回记录变量?

function MyFunctionWhichCalculates: TMyHugeRecord;
// or
function MyFunctionWhichCalculates: PMyHugeRecord;

我的意思是在性能方面,特别是避免堆栈溢出。换句话说,函数是通过引用还是通过值返回结果?

最佳答案

您可以返回一条记录。它是否“重”并不重要,实际上,它将作为引用参数传入,换句话说,就像您声明的那样:

procedure MyFunctionWhichCalculates(var Result: TMyHugeRecord);

即使您使用 New() 分配了一条记录,也不要返回指针,因为这会给用户带来 Dispose() 记录的负担通过指针。在同一个应用程序中这不是问题(但仍然是一个负担),由于内存管理器不同,这是跨模块边界的问题。总而言之,不推荐。

关于delphi - 函数应该返回一条记录还是一个指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978225/

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