关于C语言地址和内存分配的问题

intn;intpn=&n;printf("%p\n%p\n",&n,pn);内存地址是16位的16进制数(64位操作系统)为什么每次打开程序地址都不变?(打开程序前开了... int n;
int pn = &n;
printf("%p\n%p\n",&n,pn);

内存地址是16位的16进制数(64位操作系统)

为什么每次打开程序地址都不变?
(打开程序前开了别的程序来占用内存)

局部变量存储在栈的形式到底是如何的?

还是说必须用malloc才变

或者说重启电脑就会变了?
展开
 我来答
qscorpius_fly
2014-06-25 · TA获得超过1861个赞
知道小有建树答主
回答量:811
采纳率:80%
帮助的人:319万
展开全部
基本上是不会变的,这里分配的虚拟地址,如果你在n前在定义一些其他变量,那么n的地址才可能会变
百度网友f7730a4
2014-06-25 · TA获得超过429个赞
知道答主
回答量:74
采纳率:50%
帮助的人:22.3万
展开全部
这个就编译软件的内政,玩家无权干预。多定义几个可能就变了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhd2007zhd
2014-06-25 · TA获得超过117个赞
知道答主
回答量:154
采纳率:0%
帮助的人:87.6万
展开全部
给的地址 是虚拟分配的, 和编译器有关。 映射后才是实际地址。
局部变量存储在栈的形式 这个去学习下汇编,汇编里对这块有具体讲。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式