读书人

内存储器中前多少个地址是不允许访问的

发布时间: 2013-10-17 17:26:17 作者: rapoo

内存中前多少个地址是不允许访问的
如题,前多少个地址是不可读,不可写的。是64k个吗?
[解决办法]
跟物理内存地址无关,能不能访问完全看系统怎么加载(随机)。
进程地址空间
32位系统2G用于内核,2G用于用户
64位系统8TB用于内核, 8TB用于用户

内核地址不允许访问。

widows 32位系统是前2G给用户,后2G给内核。所以所有大于0x80000000的地址都是不可访问的。
[解决办法]

引用:
引用:我想知道楼主是从何想起的这个问题,很好奇

故事是这样的,从前……
int *p = NULL;
p = 3;
p[0] = 1;

运行到p[0],程序会崩溃,因为0x00000003这块地址是不允许访问的,所以引出了我问的问题。

我的故事讲完了~

为什么会崩溃呢?为什么呢?
参考《深入解析Windows操作系统-Windows Internals》内存管理

读书人网 >C++

热点推荐