c语言开辟内存的问题

假如我用在VC编译器中使用语句inti=0;这时我还没有点击编译和运行按钮,系统已经为i开辟了内存吗?还有就是要不要给i赋值才会开辟内存?直接写inti;也会开辟内存吗?... 假如我用在VC编译器中使用语句int i=0;这时我还没有点击编译和运行按钮,系统已经为i开辟了内存吗?还有就是要不要给i赋值才会开辟内存?直接写int i;也会开辟内存吗? 展开
 我来答
水晶扇
2012-08-06 · TA获得超过1536个赞
知道大有可为答主
回答量:837
采纳率:100%
帮助的人:1088万
展开全部
①C语言编码的时候不会开辟内存,只有在编译之后才会生成可执行程序,在可执行程序里面给出内存的开辟方法。
②真正内存的开辟是在程序运行的时候。程序装载到内存里面,开始运行才会真正开辟内存。
③C语言程序装载到内存中之后,其在内存中的进程空间中有代码区、全局数据区、堆区和栈区。代码区存放代码编译后的执行指令;全局数据区存放全局变量和静态变量;栈区存放函数内部的局部变量和返回地址,这部分内存是在函数调用时才申请的;堆区是自由申请内存的区域。需要使用malloc等自己分配内存,这部分内存需要自己释放。
④向int i;这样的句子,在C语言中,既是声明又是定义,所以这样的语句其实已经分配了内存,而不是等到赋值的时候。
⑤有不懂的可以追问。
ucupracacia
2012-08-06 · TA获得超过194个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:163万
展开全部
代码只有运行起来才会装入内存,才开始对内存操作,没有运行只是文本文件中的字体而已。int i时已经开辟内存了,已经有了存放变量i的地址,只是这个地址的内容是不确定的,你可以把i打印出来,而且可以取i的内存地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
415355800
2012-08-06 · TA获得超过106个赞
知道答主
回答量:73
采纳率:0%
帮助的人:76.8万
展开全部
比如程序中定义了一个int i
当此程序运行到int i时,会请求操作系统为我们的程序分配内存空间
不赋值也会开辟内存空间,不信可以输出,全局的变量是0,局部变量是一个负的很大的随机数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哈萨就是
2012-08-06 · 超过14用户采纳过TA的回答
知道答主
回答量:100
采纳率:100%
帮助的人:40.1万
展开全部
编译时会将int转化为开辟内存的指令,而运行时才会根据编译好的程序中的开辟内存的指令来开辟内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e96ae71ed
2012-08-06 · TA获得超过728个赞
知道小有建树答主
回答量:1548
采纳率:0%
帮助的人:713万
展开全部
你没运行怎么可能开辟。定义了就开辟,不用等到赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式