c语言开辟内存的问题
假如我用在VC编译器中使用语句inti=0;这时我还没有点击编译和运行按钮,系统已经为i开辟了内存吗?还有就是要不要给i赋值才会开辟内存?直接写inti;也会开辟内存吗?...
假如我用在VC编译器中使用语句int i=0;这时我还没有点击编译和运行按钮,系统已经为i开辟了内存吗?还有就是要不要给i赋值才会开辟内存?直接写int i;也会开辟内存吗?
展开
展开全部
①C语言编码的时候不会开辟内存,只有在编译之后才会生成可执行程序,在可执行程序里面给出内存的开辟方法。
②真正内存的开辟是在程序运行的时候。程序装载到内存里面,开始运行才会真正开辟内存。
③C语言程序装载到内存中之后,其在内存中的进程空间中有代码区、全局数据区、堆区和栈区。代码区存放代码编译后的执行指令;全局数据区存放全局变量和静态变量;栈区存放函数内部的局部变量和返回地址,这部分内存是在函数调用时才申请的;堆区是自由申请内存的区域。需要使用malloc等自己分配内存,这部分内存需要自己释放。
④向int i;这样的句子,在C语言中,既是声明又是定义,所以这样的语句其实已经分配了内存,而不是等到赋值的时候。
⑤有不懂的可以追问。
②真正内存的开辟是在程序运行的时候。程序装载到内存里面,开始运行才会真正开辟内存。
③C语言程序装载到内存中之后,其在内存中的进程空间中有代码区、全局数据区、堆区和栈区。代码区存放代码编译后的执行指令;全局数据区存放全局变量和静态变量;栈区存放函数内部的局部变量和返回地址,这部分内存是在函数调用时才申请的;堆区是自由申请内存的区域。需要使用malloc等自己分配内存,这部分内存需要自己释放。
④向int i;这样的句子,在C语言中,既是声明又是定义,所以这样的语句其实已经分配了内存,而不是等到赋值的时候。
⑤有不懂的可以追问。
展开全部
代码只有运行起来才会装入内存,才开始对内存操作,没有运行只是文本文件中的字体而已。int i时已经开辟内存了,已经有了存放变量i的地址,只是这个地址的内容是不确定的,你可以把i打印出来,而且可以取i的内存地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如程序中定义了一个int i
当此程序运行到int i时,会请求操作系统为我们的程序分配内存空间
不赋值也会开辟内存空间,不信可以输出,全局的变量是0,局部变量是一个负的很大的随机数
当此程序运行到int i时,会请求操作系统为我们的程序分配内存空间
不赋值也会开辟内存空间,不信可以输出,全局的变量是0,局部变量是一个负的很大的随机数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译时会将int转化为开辟内存的指令,而运行时才会根据编译好的程序中的开辟内存的指令来开辟内存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没运行怎么可能开辟。定义了就开辟,不用等到赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |