循环中的变量声明是否坏?
我指的是今天的主要静态语言(C,C ++,Java,C#)。 我听到过一些矛盾的答案,所以我想知道:
如果我有一些代码,如:
loop(...) {
type x = val;
...
}
('循环'是某种类型的循环,例如for,while)
它会在循环的每次迭代中导致内存分配,还是只导致一次? 与写这篇文章有所不同:
type x;
loop(...) {
x = val;
...
}
内存只分配一次x?
严格正确的答案是它取决于实现,因为两者在语义上都是正确的。 没有语言规范会要求或禁止这样的实现细节。
也就是说,任何值得其盐的实现都将能够重用相同的堆栈槽甚至CPU寄存器(使用本地编译,尤其是在存在JIT的情况下)。 即使是字节码也可能完全相同。
最后,有一些过早优化的东西......除非另有证明,否则您甚至不应该考虑像这样的低级细节(如果您认为对这些问题的知识和控制很重要,也许您应该只用汇编程序编程) ,因为:
上一篇: Is variable declaration within a loop bad?
下一篇: Why is iostream::eof inside a loop condition considered wrong?