为什么同一个内存地址,不同程序读出的数值不一样?(C语言程序)

我先写了一个程序在内存中创将一个字符串,并把地址打印出来:然后我在另一个程序中把这个地址赋值给另一个指针,再把字符串打印出来但是不是原来的字符串了请问这是为什么??求大神... 我先写了一个程序在内存中创将一个字符串,并把地址打印出来:

然后我在另一个程序中把这个地址赋值给另一个指针,再把字符串打印出来
但是不是原来的字符串了

请问这是为什么??求大神解答!!!
展开
 我来答
fengswd
2014-01-10 · TA获得超过333个赞
知道小有建树答主
回答量:226
采纳率:0%
帮助的人:176万
展开全部
说实话你没造成内存访问违规算你运气好。你试着输7ffe0000看看?不访问违规才怪。根据你输入的地址,这个地方一般都是进程的主线程堆栈区域,或者进程的动态堆区域。这个地方的所有内存页面都是可读可写的。而为什么同一地址在不同程序中有不同的值?因为在windows系统中你所看到的所有地址都是虚拟地址。每个进程都有完全独立的4GB虚拟地址空间,A进程的0x00300000被映射到物理页面1上,B进程的0x00300000被映射到物理页面2上。虽然他们的虚拟地址相同,但是被映射的物理页面时完全不同的。
追问
请问能不能用编程的方法把物理内存地址求出来?
追答
可以,但是即使告诉你了你也不能理解。这些东西需要你积累更多的知识才能明白。如果你有兴趣,好好琢磨琢磨页表这个东西。
赛麦吉
2023-06-03 广告
这是一张ISO12233:2000标准的分辨率测试卡,目前已被ISO12233:2014 eSFR分辨率测试卡所取代,但是目前使用ISO12233:2000标准的分辨率测试卡还是比较多。 类型 反射式:由前面照明的反射式测试标板 透射式:可... 点击进入详情页
本回答由赛麦吉提供
mosquito723
2014-01-10
知道答主
回答量:9
采纳率:0%
帮助的人:3.6万
展开全部
因为你这个是两个工程,不属于同一个工程内
这两个工程分配给各自变量分配的地址就不一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
babywolfh1
2014-01-10 · TA获得超过199个赞
知道答主
回答量:101
采纳率:0%
帮助的人:82.1万
展开全部
不同进程有自己的虚拟内存空间
所以不同进程的同一个虚拟地址指向的不是同一块物理内存
建议看看虚拟内存相关的资料
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
panda6661
2014-01-10 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:115万
展开全部
看是什么存储区,动态存储区里地址是死的,程序变量是活的,你运行某个程序的时候变量对应该地址,你运行另一个程序的时候另一个变量对应这个地址
追问
这两个程序是同时运行的
追答
我只是举例说明,地址这东西,不是你指定的,是系统给你分配的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唯一的天海冥
2014-01-10
知道答主
回答量:27
采纳率:0%
帮助的人:6.3万
展开全部
两个程序,地址空间是不一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式