关于C语言中修改内存地址内容

下面的代码我我想修改内存地址下的内存,我对堆内存和栈内存还有那些内存(全局数据区,代码区)分配不是很理解,希望帮解释一下,为什么,只是修改到35次就修改不了。如果我使用a... 下面的代码我我想修改内存地址下的内存,我对堆内存和栈内存还有那些内存(全局数据区,代码区)分配不 是很理解,希望帮解释一下,为什么,只是修改到35次就修改不了。如果我使用arr--只有一条修改,啊那么在arr内存地址之前是是什么地址呢。希望能讲得详细点,给个内存分配的表我看,顺便说下,这些区域内分别存放什么内容,和数据。

#include<stdio.h>
int i=0;
main()
{ int a=3;
int *arr=&a;
int *ayy;

printf("%d\n",arr);
for(;i<10000;i++)
{arr--;
printf("%d-%d-%d\n",i,arr,*arr);
*arr=62;
printf("%d-%d-%d\n",i,arr,*arr);
}
printf("ggg%d-%d\n",&a,a);
}
展开
 我来答
at2021
2011-12-06 · TA获得超过197个赞
知道答主
回答量:81
采纳率:0%
帮助的人:73.3万
展开全部
你这段代码的问题是arr是a的地址,你不断减arr很快就会减出数据区(应该是到了只读区吧)。所以不可能执行10000次。关于内存分配的问题我不太记得了,不过C一般也不用考虑内存分配的问题。如果你感兴趣的话对代码反汇编然后再研究下吧。推荐你看下《linux+C编程》这本书,里面对于内存分配有很详细的说明。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式