获取内存100处的值

levinee 2008-07-08 03:28:38
《c和指针》第一版98页有这样一句:
"如果你确实想把25存储于位置100,你必须使用强制类型转换
*(int *)100 = 25;

......这样对它进行间接访问就是合法的"

用下面方法获取内存100处的值:
int *pa = (int *)100;
*(int *)100 = 25;
printf("r = %d", *pa);

环境redhat9, gcc 3.2.2
运行时段错误
...全文
212 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
george3038 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 haohaokingXP 的回复:]


找个空闲分区练练,不要再心痛的内脏插入一把刀。
[/Quote]
哈哈,很有哲理。

写到300和3000000有区别么?
haohaokingXP 2008-08-01
  • 打赏
  • 举报
回复


找个空闲分区练练,不要再心痛的内脏插入一把刀。
lunarfan 2008-08-01
  • 打赏
  • 举报
回复
mark
blh 2008-08-01
  • 打赏
  • 举报
回复
那仅仅是给你举了一个例子
liangchencf 2008-08-01
  • 打赏
  • 举报
回复
貌似没有吧,不过哪个区域似乎是中断适量表,写了系统可能会挂
[Quote=引用 10 楼 c00der 的回复:]
引用 7 楼 DarknessTM 的回复:
建议在纯dos环境下编译运行……

莫非dos没有内存保护机制?
[/Quote]
novice2008 2008-08-01
  • 打赏
  • 举报
回复
内存的系统程序区是ROM,不能写滴
aozhi 2008-08-01
  • 打赏
  • 举报
回复
ring3的程序不能访问ring0的内存。
反之可以。
c00der 2008-07-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 DarknessTM 的回复:]
建议在纯dos环境下编译运行……
[/Quote]
莫非dos没有内存保护机制?
DarknessTM 2008-07-09
  • 打赏
  • 举报
回复
晕,LS的昵称和我的好像
Darkneece 2008-07-08
  • 打赏
  • 举报
回复
恐怕不可能,因为这里一般是内核用的内存地址
DarknessTM 2008-07-08
  • 打赏
  • 举报
回复
建议在纯dos环境下编译运行……
xkyx_cn 2008-07-08
  • 打赏
  • 举报
回复
赋予进程访问权限,如果做得到的话

[Quote=引用 5 楼 levinee 的回复:]
如果我就是要访问100处的整型值呢?
[/Quote]
levinee 2008-07-08
  • 打赏
  • 举报
回复
如果我就是要访问100处的整型值呢?
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dirdirdir3 的回复:]
100一般都是系统区,不能直接读写的............
[/Quote]
对头!~up
dirdirdir3 2008-07-08
  • 打赏
  • 举报
回复
100一般都是系统区,不能直接读写的............
DarknessTM 2008-07-08
  • 打赏
  • 举报
回复
操作系统保护内存段……

或者是 不可写内存区域


操作系统在内存方面有许多保护的,这点我想Linux也是一样的
xkyx_cn 2008-07-08
  • 打赏
  • 举报
回复
没有访问权限的你硬是要访问,岂能不出错

语法没问题,编译器就会通过,至于运行时错误显然不是编译器的任务

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧