Memory 何时将内存分配给变量

Memory 何时将内存分配给变量,memory,Memory,这三句话让我有点困惑 1.在变量初始化期间分配内存 2.在声明变量期间分配内存 3.在定义变量期间分配内存 欢迎任何解释!非常感谢这很大程度上取决于您使用的编程语言,以及该变量在哪里声明 例如,在Objective Pascal中,如果声明全局应用程序变量,内存管理器将在应用程序启动时为该变量保留内存 若在目标中声明了局部变量(变量在方法中声明),则当代码步进此方法时,Pascal内存将被保留 当为某个变量保留内存时,变量doessent必须初始化。它很大程度上取决于变量类型、声明的位置以及您使

这三句话让我有点困惑

1.在变量初始化期间分配内存

2.在声明变量期间分配内存

3.在定义变量期间分配内存


欢迎任何解释!非常感谢

这很大程度上取决于您使用的编程语言,以及该变量在哪里声明

例如,在Objective Pascal中,如果声明全局应用程序变量,内存管理器将在应用程序启动时为该变量保留内存

若在目标中声明了局部变量(变量在方法中声明),则当代码步进此方法时,Pascal内存将被保留


当为某个变量保留内存时,变量doessent必须初始化。它很大程度上取决于变量类型、声明的位置以及您使用的内存管理器。

对于编译语言,我认为这些都不是

全局变量在编译时分配一个内存偏移量,后者在链接时变为绝对值。局部变量在堆栈帧中指定偏移量

在加载时(当程序从磁盘加载以执行时),所有全局变量的内存空间映射到进程的内存空间,并且静态地隐式地为变量分配一些空间;如果变量已声明为初始值,则在该时刻进行设置。堆栈空间也被保留

在运行时,当您输入函数时,会在堆栈上推送一个堆栈帧,其中包含局部变量的空间

在任何情况下,变量都不会单独“分配内存”,初始化、声明或定义在运行时都不会产生任何分配效果

接受

第一个变量定义,
g
,导致加载程序时加载程序映射四个字节的全局空间(以及所有其他全局变量),并将其初始化为
1
。第二个变量定义,
l
,导致在调用main的堆栈帧上映射四个字节(除所有本地变量外),并在输入函数时自动设置为
2


未初始化的变量有一个未定义的值,直到您为它们赋值。这是因为运行时环境只需要占用内存空间,以及以前不可预测的内容,以节省初始化成本。

您想了解什么语言?考试进行得如何?35; Chuck…是C..很抱歉!:)这不是“三句话”。这是你的多项选择题的三个选项,考试的目的是让你回答这个问题,以测试你的知识和对目前为止所学材料的理解。关键是我们在寻找的答案是你的,而不是我们的。做你自己的工作。很好的解释。。谢谢!
int g= 1;

void main()
{
  int l= 2;
}