编写C语言代码:生成的可执行文件,请问双击EXE文件的时候,

是不是将文件内的所有内容全部调入内存当中?那假设我有一个局部变量,是不是调入内存之后就为它分配内存单元?还是说执行到它所在的子函数的时候,才会分配内存。如果是这样的话,那么在未执行到此子函数的时候,该局部变量在哪儿分配的内存来存储的?

    双击EXE文件,则程序就被全部调入内存了!

    局部变量,只有在执行到它所在的子函数的时候,才会分配内存。 (静态变量除外,静态变量与全局变量是一样的,未初始化的全局变量与初始化之后的全局变量在代码中的存放位置也不同)

    在未执行到此子函数的时候,该局部变量是不存在的,不需要考虑它的存储情况

追问

但是它毕竟是被调入内存中了呀

追答

调入内存的是方法和符号,即,逻辑过程,不存在数据问题

追问

假设我其中定义了int i = 10;那么保存为EXE文件之后,数值10难道就没有保存吗???

追答

10是个常量,会保存在代码的常量区,而i是个变量,在内存中没有调用到时,是没有的!程序在调用到你这块代码时,才会申请一个i变量,再从常量区取到10给其赋值的。

追问

原来int i = 10;中的10是常量呀???讲常量再赋给一个变量,原来如此 谢谢你

追答

好好研究一下编译原理,可能你会理解的更多。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-04
你说的是正在运行的程序。系统会为程序先分配一个固定内存单元。局部变量本身也是一个内存地址。也就是固定的内存单元。读写该变量是实际上对内存地址上面数据进行操作。
看点汇编语言可能较好理解。
相似回答