[juliantec_list] Re: 为什么就不可以对 (char *)0 的指针进行 * 操作??

  • From: 潘汉凡 <panhanfan@xxxxxxxx>
  • To: app-dev-in-linux@xxxxxxxxxxxxxx, Yihe Chen <yihect@xxxxxxxxxxxxxx>
  • Date: Thu, 9 Jun 2011 10:35:00 +0800 (CST)

> 
> 在现代的操作系统设计中,为了消除程序里面的这种
> bug,故意分配一个专门的不能访问的内存页,然后
> 将NULL指针安排在里面。这样当程序员不小心在自己
> 的程序中写下对NULL指针的提领操作后,系统运行时
> 就会报错。
> 

汗,原来是有这样的原因的?真感觉设计者的用心
良苦啊。

> 在windows和linux中,这样的内存页被设计者安排在
> 0地址开始对应的那个页上。实际上,这个页面里面
> 的任何地址都是不能被提领的。*((char *)0)
> 不可以,
> *((char *)0x12)之类的地址也不可以。
> 

是吗,我赶紧试一下,谢谢帮助了


Learning, Just As Your Favourite Thing!

Maillist, See http://www.juliantec.info/mlist/mail-lists.html
JulBlog, See http://www.juliantec.info/julblog/summary.php
JulWiki, See http://www.juliantec.info/wiki/




Other related posts: