gpt4 book ai didi

delphi - 在delphi中为分支声明 block 级变量

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

在Delphi prism中我们可以声明只有在特殊场合才需要的变量。

例如:棱镜

 If acondition then
begin
var a :Integer;
end;
a := 3; //this line will produce error. because a will be created only when the condition is true

这里'a'不能被赋值为3,因为它嵌套在分支内。我们如何声明一个只能在 delphi win32 中的分支内部使用的变量。因此我可以减少内存使用量,因为它仅在特定条件成立时才创建;

如果减少内存使用不是问题,我们有(或没有)的缺点是什么

最佳答案

你的问题的前提是错误的。您假设在允许 block 级变量的语言中,当控制进入或离开这些变量的作用域时,程序会为这些变量分配和释放内存。因此,例如,您认为当 acondition 为 true 时,程序会调整堆栈,以便在进入该 block 时为 a 变量腾出空间。但你错了。

编译器计算所有声明的变量和临时变量所需的最大空间,然后在进入函数时保留那么多空间。分配该空间就像调整堆栈指针一样简单;所需的时间通常与保留的空间量无关。最重要的是,您的想法实际上不会节省任何空间。

拥有 block 级变量的真正优点是它们的范围是有限的。

如果您确实需要某些变量仅在一个代码分支中有效,则将该分支分解为一个单独的函数并将变量放在那里。

关于delphi - 在delphi中为分支声明 block 级变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6519191/

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