C变量分配时间和空间

Fis*_*her 3 c variables heap stack allocation

如果我有一个带有以下内容的test.c文件

#include ...
int global = 0;

 int main() {
 int local1 = 0;

  while(1) {
  int local2 = 0;
  // Do some operation with one of them
 }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我必须在while循环中使用其中一个变量,哪一个更受欢迎?

也许我在这里有点模糊,但我想知道时间/空间分配的差异是否真正相关.

MAK*_*MAK 5

如果您想知道在for循环中声明变量是否导致在每次迭代时创建/销毁它,那么没有什么可以担心的.这些变量不是在运行时动态分配的,malloc这里没有任何内容- 只是留出一些内存用于循环内部.因此,将变量置于内部与在性能方面将其置于循环外部相同.

这里的真正区别在于范围而非性能.无论使用全局变量还是局部变量,只会影响您希望此变量可见的位置.

  • *概念上*每次都是一个新的变量.你不能使用旧的值,并且编译器可以自由地破坏它,以便在旧的超出范围和新的范围之间使用它.然而,"破坏"或"创造"它涉及*没有工作*. (2认同)