例如,当我在可能在 main 中调用的函数中定义一个变量(如
int x = 20;
)时,编译器是否已经为该变量分配了堆栈内存?因为,正如我所说,它是一个可以被调用的变量,但也可能不会被调用,并且程序可能会结束并且永远不会调用它。
我正在研究动态内存分配和 malloc 的用例,我一直在阅读一些让我感到困惑的东西,哈哈
编译器可以进行各种优化,以删除额外的变量声明或在寄存器中为它们分配空间。否则,就堆栈分配而言,它总是发生在运行时,因为编译器通常无法提前知道函数被调用了多少次。
出于某种原因,糟糕的学习材料往往会简化变量分配,只谈论“堆栈与堆”而忽略其他所有内容。查看 在堆栈和堆上分配了什么?