在windows2000上调试程序时常会遇到"访问地址非法"的提示?我觉得奇怪, windows是怎么判定我访问的地址是非法的呢,在那个位置上没有数据吗? 如果我不修改, 只是想看看都不行吗?windows的内存管理到底是什么机制呢?
解决方案 »
- select的轮循机制,是否会导致cpu占用100%
- 关于手绘折线用尽量少的分段bezier拟合的问题
- 一个简单的TIME程序,却出现了下面的错误,大家帮看看!
- [GDI+]16位色下UpdateLayeredWindow失败
- 头大了, 在doc的数据处理线程中向 CMainFrame发送消息 为什么有的时候过很久 才响应消息 并调用消息处理函数
- 高分求教,不够再加。解决全部给分
- 关于API的。
- 镜像文件挂载的问题
- 请问CString有长度限制吗,为什么我的到253个就不行了
- 有关线程中数据共享的问题
- DCOM/COM问题,200分或更多等待!
- XML 文档的格式是什么样子的? 在VC中如何读写 XML文档?
一旦访问该段空间脊背认为访问非法地址
另外Windows系统运行于保护模式,不只是CPU指令特权控制,对内存的访问也采用了一定的保护措施,如某地址空间为只读访问,某段地址空间不可访问
对岸性的,对普通京城而言,如程序的指令段为只读内存空间,系统核心空间(位于地址空间的高端大于4G的空间)为不可操作区。
window的GUI程序运行在3环,所有内存都是虚的,共有4G,这个地址有部分是有特殊用处的,而且肯定是不能让用户访问的,所有访问了这些内存肯定就错了,比如上面的同志说得“0-4K的地址空间范围内”,就是WIN9X用来检测NULL指针的。
在用户可以使用的内存中,如果要使用某一块内存的化,需要向这个内存地址提出“保留”申请才可以使用,如果访问了没有提交申请的内存,访问的内存地址就是非法的了