gpt4 book ai didi

c - 嵌套 {} 内局部变量的内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:18 26 4
gpt4 key购买 nike

引用以下代码,我对 var2 局部变量的分配有一些疑问。

  1. 什么时候分配局部变量var2的内存? var2 是否会在函数被调用或条件满足且控制进入 if(Threshold > 5) 时分配?

  2. var2保持在condition内是否只是限制了局部变量的范围?

  3. var2 保持在条件内是否会提高处理速度,因为每次调用函数时都不会分配和取消分配变量?

void fun1(int Threshold)
{
int var1 = 0;
if(Threshold > 5)
{
int var2 = 0;
}
}

最佳答案

根据优化级别,变量可能根本不会分配。优化编译器可以丢弃所有未使用的变量,并为两个具有非重叠生命周期的变量重用内存。

检查汇编程序输出(gcc -S file.c),通常可以看到在函数入口后立即分配的所有已用变量:

 sub r1, $108   ;;  stack space needed for array[100] (and some)

对应于:

 void func(bool a)
{
if (a)
{
char array[100];
subfunc(array, 100);
} else {
char array2[15];
subfunc2(array2, 15);
}
}

关于c - 嵌套 {} 内局部变量的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30702717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com