举例说明内存不能为“Read”的7大原因 1 微软 IE 缓冲溢出漏洞引起 2 内存或虚拟内存地址使用抵触造成 顺序的运行需要分配一定的内存地址给程序使用,当顺序结束时释放留出空间让给新的顺序使用, win 多任务的系统 有时前程序未结束 又有新的任务开始 底要多少内存或虚拟内存来保证我同时运行的工作任务呢 ? 也许 win 这个问题上没弄好,所以有此错误常常发生,一般运行大型软件或多媒体后出现这种情况 3 劣质内存条也会出现这个问题 4 微软 WINDOWS 系统的漏洞, window 把内存地址 0X00000000 0X0000ffff 指定为分配 null 指针的地址范围 , 如果顺序试图访问这一地址,则认为是错误。 c/c++ 编写的顺序通常不进行严格的错误检查,当采用 malloc 来分配内存而可供分配的地址空间不够的情况下返回 null 指针。但是代码不检查这种错误,认为地址分配已经胜利,于是就访问 0X00000000 地址,于是就发生内存违规访问,同时该进程被终止。 ASCII 字符填充组成的 pif 文件时会出现以下情况: 一个非法的 pif 文件(用 ascii 字符 'x' 填充)至少要 369 字节,系统才认为是一个合法的 pif 文件,才会以 pif 图标 [pifmgr.dll,0] 显示,才会在属性里有程序、 字体、内存、屏幕 ” 等内容。而且仅仅当一个非 pif 文件的大小是 369 字节时察看属性的顺序 ” 页时,不会发生程序错误,哪怕是 370 字节也不行。当对一个大于 369 字节的非法 pif 文件观察属性的顺序 ” 页时, Explorer 会出错,提示: '***' 指令引用的 '***' 内存。该内存不能为 'read' 问题出在 pif 文件的 16 进制地址: 0x00000181[0x87]0x00000182[0x01] 和 0x00000231[0xC3]0x00000232[0x02] 即使是一个合法 pif 文件,只要改动这四处的任意一处,也会引起程序错误。而只 要把 0x00000181 和 0x00000182 值改为 [0xFF][0xFF] 那么其它地址任意更改 都不会引起错误。 5 可能没有完全正确装置 apach 服务,且启动了原故 ; 把服务中的 OracleOraHomeXXHTTPServ 改成停止 6 应用顺序没有检查内存分配失败 7 应用顺序由于自身 BUG 引用了不正常的内存指针 像这样的情况都属于程序自身的 BUG 往往可在特定的操作顺序下重现错误。无效指针不一定总是 0 因此错误提示中的内存地址也不一定为 “ 0x00000000 而是其他随机数字。 如果系统经常有所提到错误提示,下面的建议可能会有帮助: (1). 检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。 (2). 更新操作系统,让操作系统的装置顺序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统自身也会有 BUG 要注意安装官方发行的升级顺序。 (3). 试用新版本的应用顺序。 (4 ) 删除然后重新创立 Winnt\System32\Wbem\Repository 文件夹中的文件: 桌面上右击我电脑,然后单击管理。 " 服务和应用程序 " 下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。删除前请创建这些文件的备份副本。 打开 " 服务和应用程序 " 单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCA L_MA CHINE\SOFTWA RE\Microsoft\WBEM\CIMOM\A utorecover MOFs |
|