在windows2000上调试程序时常会遇到"访问地址非法"的提示?我觉得奇怪, windows是怎么判定我访问的地址是非法的呢,在那个位置上没有数据吗? 如果我不修改, 只是想看看都不行吗?windows的内存管理到底是什么机制呢?
解决方案 »
- 关于MicroSoft Web浏览器 控件
- memcpy(buff8,"\xa1\x97\xff\x49\x64\xfe\xbf\xd7",8);表示什么哦?
- 关于ListView。。如何取得ListView中列的宽度。。
- 请问各位前辈门PCWSTR类型怎么转换成char*类型呢?
- 关于编辑框数据的存储问题!
- msvcr100.dll vc2010 运行环境 dll文件可以打包到我的商业软件内吗
- 用VC时的一个小问题:在VC中如何才能让程序代码前面显示行号?#0001?
- 在将来的VC的MFC中会封装ADO吗?会有CAdoDatabase吗?
- 怎样获得和设置工具栏的按钮状态
- WIN32 API写的界面,按钮点几次就没反应了
- DCOM/COM问题,200分或更多等待!
- XML 文档的格式是什么样子的? 在VC中如何读写 XML文档?
一旦访问该段空间脊背认为访问非法地址
另外Windows系统运行于保护模式,不只是CPU指令特权控制,对内存的访问也采用了一定的保护措施,如某地址空间为只读访问,某段地址空间不可访问
对岸性的,对普通京城而言,如程序的指令段为只读内存空间,系统核心空间(位于地址空间的高端大于4G的空间)为不可操作区。
window的GUI程序运行在3环,所有内存都是虚的,共有4G,这个地址有部分是有特殊用处的,而且肯定是不能让用户访问的,所有访问了这些内存肯定就错了,比如上面的同志说得“0-4K的地址空间范围内”,就是WIN9X用来检测NULL指针的。
在用户可以使用的内存中,如果要使用某一块内存的化,需要向这个内存地址提出“保留”申请才可以使用,如果访问了没有提交申请的内存,访问的内存地址就是非法的了