gpt4 book ai didi

c++ - 在循环内声明变量

转载 作者:行者123 更新时间:2023-11-28 00:16:14 25 4
gpt4 key购买 nike

考虑下一个循环

for(int i = 0; i < 99999999; i++)
{
double d1 = (double)i/10;
double d2 = (double)i/100;

std::cout << d1 * d2 << std::endl;
}

据我所知,应用程序将为循环中的每次迭代分配和释放堆栈上的 16 字节内存(在我的机器上,double 是 8 字节)。这是真的吗,还是编译器足够聪明,知道只有在循环结束时才释放内存?

关键是循环内的变量声明使代码更具可读性(imo)。

最佳答案

堆栈分配只不过是增加和减少寄存器的值。

即使编译器是一个愚蠢的编译器,这也意味着每次迭代最多执行 1 个 ADD 和 1 个 SUB 指令。这在任何情况下都不太可能,因为编译器知道它们是循环的局部变量并且它们不能更改它们的大小。

实际上它们也根本不能留在堆栈上,因为它们可以适合整个循环的两个浮点寄存器。

关于c++ - 在循环内声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152342/

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