| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6229 人关注过本帖, 1 人收藏
标题:取地址运算符&取的是真实的物理地址还是偏移地址
只看楼主 加入收藏
xiaotech
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-23
收藏(1)
 问题点数:0 回复次数:21 
取地址运算符&取的是真实的物理地址还是偏移地址
如题
搜索更多相关主题的帖子: 运算符 物理 地址 偏移 
2008-10-08 13:17
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
虚拟的4G内存上的绝对地址

如下测试程序
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
  int i;
  srand(time(NULL));
  i = rand();
  printf("%x %d", &i, i);
  getch();
  return 0;
}

生成exe文件后,打开三次,见附件

1.gif (10.2 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-10-08 15:28
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1697
专家分:4305
注 册:2007-12-27
收藏
得分:0 
个人认为在现代概念下的操作系统中,用户应该看不见物理地址才是
所以除了操作系统本身的代码以外,都应该是对某个基址/段头/页头的偏移量
2008-10-08 18:02
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
楼上2位的说法都没有错。对2楼的程序我想稍微修改下,就是打印地址应当使用%p而不是%x

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-10-08 18:38
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
收藏
得分:0 
[bo][un]永夜的极光[/un] 在 2008-10-8 15:28 的发言:[/bo]

虚拟的4G内存上的绝对地址

如下测试程序
#include
#include
#include
#include

int main()
{
  int i;
  srand(time(NULL));
  i = rand();
  printf("%x %d", &i, i);
  getch();
  return 0; ...
%x换成%p  地址就是32位了 ,是不是就说明是绝对地址了,另外请问虚拟内存如何映射到真正的内存啊 ,(你拿着虚拟地址到内存中又找不到数据)还有就是 为什么 不管运行多少次 ,为什么  地址总是那个 ,而且我电脑运行的地址 竟然和你的一样
2008-10-08 20:08
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
收藏
得分:0 
那并不是实际地址, 那是操作系统分配的逻辑地址
2008-10-08 20:18
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
%p 是打印地址的专用格式化字符。并不是绝对地址。虚拟内存就是一种内存没有什么要映射的,虚拟内存不过是一种把硬盘上分一点空间当内存的技术而已,和真实的内存除了速度上我感觉没有任何的不同。LS想说的大概是80X86的保护模式吧?曾经有一种技术,就是把一个整数通过强制类型转换赋给指针,然后就可以读取指定地址的值。现在貌似这么做会出错,但用scanf任然可以将地址值赋给指针,从而寻址

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-10-08 20:20
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
收藏
得分:0 
除了在像 DOS 一类的操作系统下,用户程序能取得真实的物理地址
在现在的保护模式下的操作系统,用户程序只能取得操作系统分配的逻辑地址
2008-10-08 20:23
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
如果想看关于虚拟地址到物理地址的映射 你可以去看看80386相关保护模式的书 里面的分页模式好像就是这个了 在16位的tc中是偏移地址

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-10-08 20:27
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1697
专家分:4305
注 册:2007-12-27
收藏
得分:0 
我想说的是如果不研究操作系统本身的话,探讨数据的物理地址好像没啥意义
2008-10-08 20:51
快速回复:取地址运算符&取的是真实的物理地址还是偏移地址
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022345 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved