为什么c语言的NULL地址是被保留的?
(2012-06-07 01:20:09)
标签:
c语言
杂谈
为什么c语言的NULL地址是被保留的?我记得4G线性空间的低3G是用户空间,最高的1G是系统空间,
为什么0地址不能用呢,多谢NULL是多少以及是不是被保留和具体的系统平台有关。
你用C语言写OS的时候可能需要访问0地址空间,这时候0就不是被保留的地址。NULL跟定xx有關啊。你所能访问的都是逻辑地址,而不是物理地址。
零地址在逻辑上不可用,在物理上任何一块内存都可以访问(有相应的硬件和软件寻址支持的话)。0地址处的内存既然不能malloc分配,那么,一直闲置吗
本帖最后由 w_anthony 于 2011-03-01 20:33 编辑
0地址处的内存既然不能malloc分配,那么,一直闲置吗
湿了耶 发表于 2011-03-01 20:27
http://bbs.chinaunix.net/images/common/back.gif
逻辑意义上的内存只是对物理内存的一种映射关系,一个进程中有效的逻辑内存的页并不都是连续的,零地址的逻辑页根本不存在,有什么闲不闲置的说法?这个0地址不可用,是内核决定的还是编译器决定的呀逻辑意义上的内存只是对物理内存的一种映射关系,一个进程中有效的逻辑内存的页并不都是连续的,零地
...
w_anthony 发表于 2011-03-01 20:32
http://bbs.chinaunix.net/images/common/back.gif你指http://www.gxhsfs.com的逻辑页应该就是线性地址空间上的吧?那就应该通常上都是连续的,然后经过OS的内存管理单元和硬件MMU映射后的物理地址通常都是不连续的。这个0地址不可用,是内核决定的还是编译器决定http://www.dcby99.com/的呀
湿了耶 发表于 2011-03-01 20:43
http://bbs.chinaunix.net/images/common/back.g
分享:
喜欢
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。