gpt4 book ai didi

c++ - 编译器如何在堆栈上分配内存

转载 作者:行者123 更新时间:2023-11-30 21:14:24 28 4
gpt4 key购买 nike

如果我在函数中只有很少的局部变量,例如 -

void fun()
{
int a,b,c,d,e,f,g;
}

编译器是否为每个变量依次分配内存?如果是为什么编译器不一次读取所有变量然后为其分配内存他们一击?

最佳答案

编译器不会为它们中的任何一个分配内存。源代码和最终可执行文件之间的区别比这更复杂。简而言之,如果这些变量实际上最终实际存在于执行计算机上(这绝不是确定的:很多都可以优化掉!),它们的大小将直接接近堆栈帧的大小,这在很大程度上是“构造”只是凭借每当进入/离开此范围时堆栈指针递增的距离。

从这个意义上说,编译器“一次性为它们分配内存”。但基本上不会。 :-)

关于c++ - 编译器如何在堆栈上分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136900/

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