c++ - 内存分配

标签 c++

当我们在一个函数(这里不是 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/

相关文章:

C++ 在 if 条件下使用 g++ 定义一个静态变量

c++ - 结构在 C++ 中的行为方式

c++ - Unresolved inclusion : Eclipse Not Showing "Includes" tab under "Paths and Symbols":

c++ - 什么是基于堆栈的类?

c++ - 以编程方式确定 Qt 样式表选项?

python - Boost.Python 列出所有公开的类和属性

c++ - 字符串文字将存储在哪里

c++ - 视频节目中更好的边缘滤波算法

c++ - `operator()...`在C++代码中是什么意思?

c++ - 具有自定义类的 Vector 的 vector