①C语言编码的时候不会开辟内存,只有在编译之后才会生成可执行程序,在可执行程序里面给出内存的开辟方法。
②真正内存的开辟是在程序运行的时候。程序装载到内存里面,开始运行才会真正开辟内存。
③C语言程序装载到内存中之后,其在内存中的进程空间中有代码区、全局数据区、堆区和栈区。代码区存放代码编译后的执行指令;全局数据区存放全局变量和静态变量;栈区存放函数内部的局部变量和返回地址,这部分内存是在函数调用时才申请的;堆区是自由申请内存的区域。需要使用malloc等自己分配内存,这部分内存需要自己释放。
④向int i;这样的句子,在C语言中,既是声明又是定义,所以这样的语句其实已经分配了内存,而不是等到赋值的时候。
⑤有不懂的可以追问。
代码只有运行起来才会装入内存,才开始对内存操作,没有运行只是文本文件中的字体而已。int i时已经开辟内存了,已经有了存放变量i的地址,只是这个地址的内容是不确定的,你可以把i打印出来,而且可以取i的内存地址。
比如程序中定义了一个int i
当此程序运行到int i时,会请求操作系统为我们的程序分配内存空间
不赋值也会开辟内存空间,不信可以输出,全局的变量是0,局部变量是一个负的很大的随机数
编译时会将int转化为开辟内存的指令,而运行时才会根据编译好的程序中的开辟内存的指令来开辟内存
你没运行怎么可能开辟。定义了就开辟,不用等到赋值