内存分配

let*_*tsc 2 c++

当我们在函数内部定义一个变量(这里不是主变量)时,是在运行时完成内存分配还是为我们服务器?

当我有以下情况时会发生什么:

int f()
{
     int a=10;

     ........
}

main()
{
     int i;
     scanf("%d",&i);
     while(--i)
         f();
      ..........
}
Run Code Online (Sandbox Code Playgroud)

函数f()中的'a'是否创建'我'?动态分配也是如此?

Hen*_*man 11

a每次调用时都会生成局部变量f().它是设置"堆栈框架"的一部分,f()并且几乎没有任何时间成本.它占用了一个小堆栈空间,但不超过一个必要的堆栈空间int.

while(--i) f(); 函数期间f()调用10次,每次'new' a占用相同的内存点.我们调用这种动态分配,它被称为堆栈,本地或自动分配.