当我们在一个函数(这里不是 main)中“定义”一个变量时,内存分配是在运行时完成的还是加载器为我们服务??
当我拥有时会发生什么:
int f()
{
int a=10;
........
}
main()
{
int i;
scanf("%d",&i);
while(--i)
f();
..........
}
函数 f() 中的 'a' 是否创建了 'i' 次?还是动态分配??
最佳答案
局部变量a
在每次调用f()
时产生。它是为 f()
设置“堆栈框架”的一部分,而且(几乎)没有任何时间成本。它会占用一点堆栈空间,但不会超过 int
所需的空间。
在 while(--i) f();
期间,函数 f()
被调用了 10 次,每次都是一个“新的”a
占用相同的内存位置。我们不称这种动态分配,它称为堆栈、本地或自动分配。
关于c++ - 内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3855944/