内存不能为read的解决办法

  近日不少网友都遇到了该内存不能为“read”的错误提示。希望以下文章能对大家有所帮助。

  运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。

  “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。

  “0x????????”指令引用的“0x????????”内存,该内存不能为“written”。

  以上的情况相信大家都应该见到过,甚至说一些网友因为不爽于这个经常出现的错误提示而屡次重装系统。相信普通用户应该不会理解那些复杂的十六进制代码。

  出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

  一:先说说硬件:

  一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。

  二、如果都没有,那就从软件方面排除故障了。

  先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的 “健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。

  在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为 “0x00000000”,而是其它随机数字。

  首先建议:

  1、检查系统中是否有木马或病毒?

  >2、更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。

  3、尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。

  4、删除然后重新创建WinntSystem32WbemRepository文件夹中的文件:在桌面上右击我的电脑,然后单击管理。在"服务和应用程序"下,单击服务,然后关闭并停止WindowsManagementInstrumentation服务。删除 WinntSystem32WbemRepository文件夹中的所有文件。(在删除前请创建这些文件的备份副本。)打开"服务和应用程序",单击服务,然后打开并启动WindowsManagementInstrumentation服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWBEMCIMOMAutorecoverMOFs

时间: 2024-07-28 20:45:55

内存不能为read的解决办法的相关文章

Win7系统提示“内存不足”的原因及解决办法

  1,系统提示"内存不足"的原因分析 "内存不足"故障的原因主要包括如下几个. ① 同时运行的应用程序太多. ② 硬盘剩余空间太少. ③ 系统中的"虚拟内存"设置太少. ④ 运行的程序太大. ⑤ 笔记本电脑感染了病毒. 2 , 系统提示"内存不足"的解决办法 系统出现"内存不足"故障后,可以按照如下方法解决. ① 关闭不需要的应用软件. ② 删除剪贴板中的内容.删除方法是打开"开始-所有程序一附

访问php时提示内存位置访问无效的解决办法和思路分析_win服务器

我们就需要找到是哪一个DLL文件加载出现了问题.排查方法是: 将php.ini中 display_startup_errors = Off 改为display_startup_errors = On . 这是访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查. 把出问题的dll都用分号(;)注释掉后,php就可以正常运行了. 如果加载失败的d

手机内存不足?手机内存减少五大原因与解决办法

1.短信垃圾 可能一条短信不会占很大的空间,但是短信除了文字外,还会带有图片.声音等信息.你要是长时间不去清理,累计起来占用的内存还是很多的. 定期删掉一些垃圾短信很有必要,删短信时也要注意重要的短信别误删.   2.图片视频 对于爱自拍的美女们来说,长年累月手机里的图片没有上千张,也有上百种.但因为照片的像素高,所以占用的空间也会更大. 可以将一些图片视频同步到云端,这样既可以节省空间,又可以防止图片视频丢失.   3.应用缓存 在使用应用的过程中都会带有缓存,一般来说,有了缓存数据后,打开A

联想电脑录入指纹提示“没有永久性的内存保存您的指纹”解决办法

出现问题是指纹太多导致存储空间不足了(因为这个存储在硬件内存上所以空间是有限的安装系统也不会删除这些指纹) 解决办法 我们进入到系统之后"启动指纹控制中心"如下图所示: 然后在打开的设置选项,选中"开机安全性"如下图所示: 弹出开机安全性窗口,在"已为开机安全性授权的指纹"下删除未知的指纹信息即可. 好了我们删除未知的或者是其它的确定之后再录入指纹就不会提示 没有永久性的内存保存您的指纹 错误了,各位试一下.

智能手机内存空间不足问题的解决办法

空间不足怎么办 1.系统提示内存空间不足了之后,卸载程序也不会增加多少可用空间,仍然会提示系统内存不足,亲测通过格式化手机可以解决,也就是恢复出厂设置(恢复出厂设置会把所有应用都卸载回到最初界面).当然这个方法也会让你安装的APP都丢失,如果没必要刷机就再看看下面的. 2.打开RE文件浏览器,将/data/dalvik-cache 这个文件夹里面的都是系统缓存文件和卸载定制程序留下来的无用垃圾,可以放心全部删除,系统所需文件重启后能自动生成的,删除后可以感觉到系统内存明显提升,RAM内存释放,重

MS SQL执行大脚本文件时,提示“内存不足”的解决办法

问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到"内存不足"的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files\Microsoft SQL Serv

jQuery内存泄露解决办法_jquery

本文大家分享了jQuery内存泄露解决办法,供大家参考,具体内容如下 思路:为JQuery扩展删除jquery元素对象的方法,大大减轻内存泄露的压力 ;(function($){ if(!$.lui.widget) $.lui.widget = {}; //$.lui.newGuid()生成随机32位id //如果采用此方式多次生成jquery对象的话,html代码字符串会在内存中多次重复,占用额外的内容,也会有泄露.而$("<span></span>").at

httpd.exe占用cpu 100%解决办法

网上说了是我们没有限制apache的并发数与子进行数,后来百度得出下面代码 编辑httpd.conf  代码如下 复制代码 Win32DisableAcceptEx ##加入这行 ThreadsPerChild 250 MaxRequestsPerChild 0 重启apache就解决了. MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量.在处理"MaxRequestsPerChild 数字"个请求之后,子进程将会被父进程终止,这时候子进程占用的内存

Apache启动报错No space left on device: AH00023解决办法

对于这类错误是因为linux系统的ipc信号量造成的,apache启动时,会创建很多子进程.他们是通过信号量来和子进程进行通信的. 信号量介绍: 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信.本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况:共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制.通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写.在Linux系统下 ,常用的方式