C预言的简单问题02

全局变量,编译运行时分配内存,那么编写出的程序给别人使用时,是运行时分配?编译时非配的内存就不算数了吧?》

全局变量,在编译的时候就分配了,而所谓的分配并不是直接使用内存,而是把这个变量编译进exe的可执行文件里,操作系统在执行这个文件的时候就会自动为它分配内存。
自动局部变量,是在exe文件执行的过程中在栈中为其分配内存。
指针的malloc或者new空间分配为exe文件在执行的时候在堆中分配。

编译链接之后生成的为exe文件。
当exe文件被双击执行的时候,变成为系统中的一个进程,操作系统会为其分配内存。这些内存包括代码区,全局数据区,堆栈。
全局变量在进程运行的时候,存放在全局数据区,在整个进程运行的过程中一直存在。
在进程刚运行的时候,堆栈应该是空的,而在执行函数的过程中,函数里的局部变量便在栈中分配内存,在函数结束的时候,局部变量的内存便被收回了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-11
编译时刻只是决定了全局变量所占内存的(相对)位置,等到运行时,操作系统会为这个程序指定相应的内存空间,这时这个全局变量才真正有了对应的内存。
第2个回答  2010-03-11
编译时为变量分配一个地址,以后运行时都是那个地址(相对的)了.
相似回答
大家正在搜