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

社区

C++ 语言 帖子详情 内存中前多少个地址是不允许访问的 冰做的夏天 2013-01-29 11:37:10 如题,前多少个地址是不可读,不可写的。是64k个吗?

...全文

588 26 打赏 收藏 内存中前多少个地址是不允许访问的 如题,前多少个地址是不可读,不可写的。是64k个吗? 复制链接

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 26 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 赵4老师 2013-10-17 打赏举报 回复 其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。

冰做的夏天 2013-02-01 打赏举报 回复 引用 24 楼 zhao4zhong1 的回复:引用 19 楼 forever199112 的回复:引用 2 楼 derekrose 的回复:我想知道楼主是从何想起的这个问题,很好奇

故事是这样的,从前……

int *p = NULL;

p = 3;

p[0] = 1;

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

我的故事讲完了~

为什么……

我已经解释过了啊,这块空间被系统留下来干什么的我就不知道了。 赵4老师 2013-01-31 打赏举报 回复 引用 19 楼 forever199112 的回复:引用 2 楼 derekrose 的回复:我想知道楼主是从何想起的这个问题,很好奇

故事是这样的,从前……

int *p = NULL;

p = 3;

p[0] = 1;

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

我的故事讲完了~

为什么会崩溃呢?为什么呢?

参考《深入解析Windows操作系统-Windows Internals》内存管理

thunk123 2013-01-31 打赏举报 回复 另外还有map i/o空间,进入保护模式后这段内存会被重新映射 thunk123 2013-01-31 打赏举报 回复 那部分地址空间是bios和vga在用把 wocow3 2013-01-30 打赏举报 回复 windows用户态是前64K,不可访问 赵4老师 2013-01-30 打赏举报 回复 操作系统内存管理功能中允不允许访问某段内存,关键看是对谁。 majia2011 2013-01-30 打赏举报 回复 0-0xffff,这段内存,被nt系统设置成了0,用来防止非法访问。

我总是想这个问题,nt,当初这么设计保护模式,是想留着跑实模式的东西,够无聊吧 decoed 2013-01-30 打赏举报 回复 楼主是想说指针嘛?不要乱改地址,这些是操作系统自动分配的,没必要去动他 唯恐天下不乱 2013-01-30 打赏举报 回复 所有的物理内存都是可以读取的,但是一些内存无法写入的(操作系统保护)。具体多少就不知道了。

进程修改其他进程的数据不是不可以的,但是修改了数据会导致被修改进程的崩溃。

derekrose 2013-01-30 打赏举报 回复 引用 19 楼 forever199112 的回复:引用 2 楼 derekrose 的回复:我想知道楼主是从何想起的这个问题,很好奇

故事是这样的,从前……

int *p = NULL;

p = 3;

p[0] = 1;

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

我的故事讲完了~

是妹子吧? 冰做的夏天 2013-01-30 打赏举报 回复 引用 2 楼 derekrose 的回复:我想知道楼主是从何想起的这个问题,很好奇

故事是这样的,从前……

int *p = NULL;

p = 3;

p[0] = 1;

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

我的故事讲完了~ 冰做的夏天 2013-01-30 打赏举报 回复 引用 1 楼 taodm 的回复:各系统是完全不同的,别浪费生命折腾这话题。

生命在于折腾 枫桦沐阳 2013-01-30 打赏举报 回复 引用 13 楼 yisikaipu 的回复:引用 12 楼 ynb119 的回复:晕了,这又跟实模式存在什么关系?

现在所有系统都跑在保护模式(都是虚拟地址)之下,所说的64K是指x86时代的16位寄存器只能存放64K地址的事情吧。。。。

Windows7 32系统 用户空间 0-2G 的地址的头尾各 64k 是系统保留的

这点倒是真的,以前还真没仔细研究过。又学到了。。

redleaves 2013-01-30 打赏举报 回复 楼主这个问题应该有个上下文.

否则,只能说---物理存在的地址,都是可以访问的. 赵4老师 2013-01-30 打赏举报 回复 DOS下随便读写物理内存中哪个字节都是可以的吧。 yisikaipu 2013-01-30 打赏举报 回复 引用 12 楼 ynb119 的回复:晕了,这又跟实模式存在什么关系?

现在所有系统都跑在保护模式(都是虚拟地址)之下,所说的64K是指x86时代的16位寄存器只能存放64K地址的事情吧。。。。

http://msdn.microsoft.com/en-us/library/ms810627.aspx

Windows NT builds a safeguard into every process's address space. Both the upper and lower 65,536 bytes of each process are permanently reserved by the system. These portions of the address space are reserved to trap stray pointers—pointers that attempt to address memory in the range 00000000-0000FFFF or 7FFF0000-7FFFFFFF. Not coincidentally, it is easy to detect pointers in this range by simply ignoring the lower four nibbles (the rightmost two bytes) in these addresses. Essentially, a pointer is invalid if the upper four nibbles are 0000 or 7FFF; all other values represent valid addresses.

yisikaipu 2013-01-30 打赏举报 回复 引用 12 楼 ynb119 的回复:晕了,这又跟实模式存在什么关系?

现在所有系统都跑在保护模式(都是虚拟地址)之下,所说的64K是指x86时代的16位寄存器只能存放64K地址的事情吧。。。。

Windows7 32系统 用户空间 0-2G 的地址的头尾各 64k 是系统保留的 枫桦沐阳 2013-01-30 打赏举报 回复 晕了,这又跟实模式存在什么关系?

现在所有系统都跑在保护模式(都是虚拟地址)之下,所说的64K是指x86时代的16位寄存器只能存放64K地址的事情吧。。。。 yisikaipu 2013-01-30 打赏举报 回复 引用 8 楼 majia2011 的回复:0-0xffff,这段内存,被nt系统设置成了0,用来防止非法访问。

我总是想这个问题,nt,当初这么设计保护模式,是想留着跑实模式的东西,够无聊吧

请教,与实模式有关?求确切出处

这个难道不仅仅是因为该系统的分配粒度是64k ?

除了0外,其它0xfffe个都是陪葬的 加载更多回复(5) Linux内核实时性优化-优先级继承与传递算法-rwlock-rwsem-mutex锁机制-解决优先级翻转问题提升系统实时性能-基于Linux-kernel-419-510或主.zip Linux内核实时性优化_优先级继承与传递算法_rwlock_rwsem_mutex锁机制_解决优先级翻转问题提升系统实时性能_基于Linux_kernel_419_510或主.zip【人工智能大模型实战应用】资源征集 智能工厂数字化场景DeepSeek+AI智算一体机设计方案.ppt 智能工厂数字化场景DeepSeek+AI智算一体机设计方案.ppt 掌握SpringBoot-2(2).docx 掌握SpringBoot-2(2).docx 智慧医保数字化场景DeepSeek+AI智算一体机设计方案.ppt 智慧医保数字化场景DeepSeek+AI智算一体机设计方案.ppt 嵌入式-C语言课程资料 里面包含了课件和资料两个部分的内容

课件就是上课时候会讲到的C语言的内容

资料包含软件的安装包、扩展内容、电子书以及一些其他的内容

C++ 语言

65,183

社区成员

250,527

社区内容

发帖 与我相关 我的任务 C++ 语言 C++ 语言相关问题讨论,技术干货分享,前沿动态等 复制链接

扫一扫 分享 确定 社区描述 C++ 语言相关问题讨论,技术干货分享,前沿动态等 c++ 技术论坛(原bbs) 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

请不要发布与C++技术无关的贴子请不要发布与技术无关的招聘、广告的帖子请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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

+ 用AI写文章


OPPO寄修服务
猫咪为什么喜欢闻腋下