计算机发生内存不能读写问题研究
- 格式:doc
- 大小:25.00 KB
- 文档页数:6
开机显示内存不能为read的解决方法解决开机显示内存不能为read的方法在使用电脑时,有时候可能会遇到开机显示内存不能为read的问题。
这个问题通常是由于软件或驱动程序的冲突导致的。
下面将介绍一些解决这个问题的方法。
方法一:升级驱动程序驱动程序是操作系统与硬件之间的桥梁,如果驱动程序不兼容或过时,就可能导致内存不能为read的问题。
因此,我们可以尝试升级驱动程序来解决这个问题。
首先,我们可以通过访问硬件制造商的官方网站,下载最新的驱动程序。
然后,打开设备管理器,找到相关的设备,右键点击并选择“更新驱动程序软件”。
接下来,选择“浏览计算机以查找驱动程序软件”,然后选择下载的驱动程序进行安装。
完成后,重新启动电脑,看看问题是否解决。
方法二:禁用冲突的软件有时候,某些软件可能与操作系统或其他软件冲突,导致内存不能为read的问题。
为了解决这个问题,我们可以尝试禁用冲突的软件。
首先,我们可以通过打开任务管理器,点击“启动”选项卡,找到可能引起冲突的软件,右键点击并选择“禁用”。
接下来,重新启动电脑,看看问题是否解决。
如果问题解决了,那么我们可以考虑升级或替换这些软件,以确保它们与操作系统兼容。
方法三:检查硬件问题除了软件问题,硬件问题也可能导致内存不能为read的问题。
我们可以尝试检查硬件是否正常工作。
首先,我们可以打开电脑机箱,检查内存条是否插入正确并紧固。
如果内存条松动或插入不正确,就可能导致内存不能为read的问题。
此外,我们还可以使用内存测试工具来测试内存的健康状况。
这些工具可以帮助我们检测出可能存在的内存问题。
如果发现内存存在问题,我们可以考虑更换或修复内存。
方法四:运行系统文件检查工具有时候,系统文件的损坏或缺失也可能导致内存不能为read的问题。
为了解决这个问题,我们可以运行系统文件检查工具来修复系统文件。
首先,我们可以打开命令提示符,输入“sfc /scannow”命令,并按下回车键。
然后,系统文件检查工具会开始扫描并修复系统文件。
内存不能为read 内存读写错误的解决办法当我们在计算机系统中运行一些容量较大的程序或者游戏时,系统常常会自动弹出“xx 内存不能为read或written”的错误提示,遇到这种故障信息时,我们该如何才能将它有效排除,同时确保下次运行容量较大的程序或者游戏时,系统不会再次出现系统内存读写错误呢?事实上,当我们不幸遭遇上面的故障信息时,我们可以尝试按照如下步骤进行依次排查:内存不能为read的解决办法及时释放系统内存我们知道,在运行一些容量较大的程序或者游戏时,需要消耗相当的系统内存资源,要是此时内存空间不够时,那么系统内存读写错误的故障提示很有可能就会发生。
为了有效避免这种错误提示,我们最好在运行容量较大的程序或者游戏之前,应该先将计算机系统重新启动一下,这样能够将系统内存空间充分释放出来;如果计算机内存空间本身就比较小的话,那么我们建议各位最好及时升级内存,以便拓展内存的有效使用空间,以防止由于系统内存不足而造成系统内存读写错误的发生。
当然,在系统自身内存空间不足的情况下,我们应该先将那些随机启动的杀毒软件以及相关即时监控的程序暂时关闭掉,之后再尝试运行容量较大的应用程序或者网络游戏,因为杀毒软件及相关监控程序会在一定程度上消耗一些系统内存资源,将它们关闭可以节省不小的内存空间,从而能够有效避免内存读写错误现象的发生。
当然,值得注意的是,我们在运行完大容量的程序或游戏之后,还必须记得及时将相关程序的监控功能全部打开。
手工修复系统服务与系统内存读写操作有关的Windows Management Instrumentation服务要是发生错误的话,也会导致系统弹出内存读写错误的提示,所以当我们遇到这种错误现象时,可以尝试手工修复一下Windows Management Instrumentation服务,下面就是具体的修复步骤:首先用鼠标右键单击系统桌面中的“我的电脑”图标,从弹出的快捷菜单中执行“管理”命令,打开本地系统的计算机管理窗口,在该窗口的左侧显示区域,依次展开“服务和应用程序”/“服务”选项,在对应“服务”选项所在的右侧显示区域中,找到Windows Management Instrumentation服务,并用鼠标右键单击该服务选项,从弹出的快捷菜单中执行“属性”命令,打开如图所示的服务属性设置界面:其次在该设置界面的“常规”标签页面中,单击“停止”按钮,将Windows Management Instrumentation服务暂时停止运行。
该内存不能为read解决方法计算机系统中运行一些容量较大的程序或者游戏时,系统常常会自动弹出“xx内存不能为read或written”的错误提示,遇到这种故障信息时,我们该如何才能将它有效排除,同时确保下次运行容量较大的程序或者游戏时,系统不会再次出现系统内存读写错误呢?事实上,当我们不幸遭遇上面的故障信息时,我们可以尝试按照如下步骤进行依次排查:移除无效插件程序在上网冲浪的过程中,许多插件程序会偷偷地安装到计算机系统中,而不少插件程序往往都有防删除的功能,因此这些插件很容易与其他的应用程序发生冲突,从而间接地引起系统内存读写错误的现象。
为了给那些大容量的应用程序或游戏提供一个干净、稳定的工作环境,我们最好定期使用类似360安全卫士这样的程序,来查看系统是否被偷偷安装了各种无效的垃圾插件程序,一旦发现的话,那可以直接将它们从系统中及时卸载干净。
手工修复系统服务与系统内存读写操作有关的Windows Management Instrumentation服务要是发生错误的话,也会导致系统弹出内存读写错误的提示,所以当我们遇到这种错误现象时,可以尝试手工修复一下Windows Management Instrumentation服务,下面就是具体的修复步骤:首先,用鼠标右键单击系统桌面中的“我的电脑”图标,从弹出的快捷菜单中执行“管理”命令,打开本地系统的计算机管理窗口,在该窗口的左侧显示区域,依次展开“服务和应用程序”/“服务”选项,在对应“服务”选项所在的右侧显示区域中,找到Windows Management Instrumentation服务,并用鼠标右键单击该服务选项,从弹出的快捷菜单中执行“属性”命令,打开服务属性设置界面;其次在该设置界面的“常规”标签页面中,单击“停止”按钮,将Windows Management Instrumentation服务暂时停止运行。
之后,打开计算机系统的资源管理器窗口,在该窗口中依次展开“Windows”、“system32”、“wbem”、“repository”文件夹,然后将“repository”文件夹窗口中的所有文件进行一下备份,备份完成后将该文件夹中的所有内容全部清除掉;接下来,重新启动一下计算机系统,待系统启动成功后,按前面操作打开Windows Management Instrumentation服务的属性设置界面,单击该界面中的“启动”按钮,相信这么一来Windows Management Instrumentation服务就能正常运行了。
电脑出现"该内存不能为read、written "的完全解决方案运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。
该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
不知你出现过类似这样的故障吗?(0x后面内容有可能不一样。
)一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
下面先说说硬件:一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。
你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。
如果都没有,那就从软件方面排除故障了。
先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。
举个例子:一个桶子只能将一斤的水,当你放入两斤的水进入时,就会溢出来。
而系统则是在屏幕上表现出来。
这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。
另外也可能是硬件设备之间的兼容性不好造成的。
一般原因是:1、驱动不稳定,与系统不兼容,这最容易出现内存不能为Read 或者文件保护2、系统安装了一个或者多个流氓软件,这出现IE 或者系统崩溃的机会也比较大,也有可能出现文件保护3、系统加载的程序或者系统正在运行的程序之前有冲突,尤其是部分杀毒软件监控程序4、系统本身存在漏洞,导致容易受到网络攻击。
开机显示内存不能为read的解决方法在使用电脑的过程中,有时我们可能会遇到开机后显示内存不能为read的问题。
这个问题常常让人感到困惑,不知道该如何解决。
本文将为大家介绍一些解决这个问题的方法。
我们需要了解这个问题的原因。
当我们开机后,系统会自动进行内存检测。
如果检测到内存出现问题,就会显示“内存不能为read”的错误信息。
这可能是由于内存损坏、内存插槽松动、内存不兼容等原因引起的。
解决这个问题的方法有以下几种:1.重新插拔内存条:首先,我们可以尝试重新插拔内存条。
首先关机,并拔掉电源线。
然后打开机箱,找到内存插槽。
轻轻按下内存条两端的扣子,将内存条取出。
然后再重新插入内存条,确保插入时扣子完全插入。
最后重新启动电脑,看看问题是否解决了。
2.更换内存条:如果重新插拔后问题依然存在,那么可能是内存条本身出现了问题。
此时,我们可以考虑更换内存条。
首先需要确定自己的电脑支持的内存类型和容量。
然后购买适合的内存条,并按照说明书的指引进行更换。
3.清洁内存插槽:有时,内存插槽上积聚的灰尘和污垢会导致接触不良,从而引发“内存不能为read”的问题。
为了解决这个问题,我们可以用吹风机或者软毛刷清洁内存插槽。
注意在清洁过程中要避免静电,可以使用防静电手环或者触摸金属物体消除静电。
4.检查内存兼容性:有时,我们在更换或者升级内存条时,可能会遇到兼容性问题。
因此,我们需要确保新购买的内存条与主板兼容。
可以查看主板的说明书或者官方网站,了解主板的内存兼容性列表。
同时,也可以在购买内存条时咨询售后人员,确保选择合适的内存条。
5.更新或降级BIOS:BIOS是主板上的固件,它与内存的兼容性有着密切的关系。
如果我们升级了BIOS或者更换了新的内存条后出现了“内存不能为read”的问题,那么可能是因为BIOS版本不兼容。
这时,我们可以尝试降级BIOS,或者更新最新的BIOS版本,以解决兼容性问题。
总结起来,当我们遇到开机显示内存不能为read的问题时,可以尝试重新插拔内存条、更换内存条、清洁内存插槽、检查内存兼容性、更新或降级BIOS等方法来解决问题。
内存不能为read的解决方法内存不能为read是一种常见的计算机问题,它可能会导致系统运行缓慢或者程序无法正常执行。
在面对这个问题时,我们需要采取一些有效的解决方法来解决它,以确保计算机系统的正常运行。
下面,我将为大家介绍一些解决内存不能为read的方法。
首先,我们可以尝试重新启动计算机。
有时候,内存不能为read的问题可能是由于系统运行时间过长或者内存泄漏导致的。
通过重新启动计算机,可以清除系统内存中的临时数据,从而解决内存不能为read的问题。
其次,我们可以检查计算机内存条是否损坏。
内存条损坏也是导致内存不能为read的常见原因之一。
我们可以通过更换内存条或者将内存条插槽清洁干净来解决这个问题。
另外,我们还可以尝试更新系统驱动程序。
有时候,旧的或者不兼容的系统驱动程序也会导致内存不能为read的问题。
通过更新系统驱动程序,可以修复这个问题,确保系统正常运行。
此外,我们还可以运行系统自带的内存诊断工具。
大多数操作系统都提供了内存诊断工具,通过运行这些工具,我们可以检测和修复内存问题,解决内存不能为read的错误。
最后,我们可以尝试升级操作系统或者更换计算机硬件。
有时候,老旧的操作系统或者硬件也会导致内存不能为read的问题。
通过升级操作系统或者更换硬件,可以解决这个问题,提高系统的稳定性和性能。
总的来说,内存不能为read是一个常见的计算机问题,但是我们可以通过一些有效的解决方法来解决它,确保计算机系统的正常运行。
通过重新启动计算机、检查内存条、更新系统驱动程序、运行内存诊断工具以及升级操作系统或者更换硬件,我们可以有效地解决内存不能为read的问题,提高系统的稳定性和性能。
希望以上方法能够帮助到大家,解决内存不能为read的问题。
内存不能为read的解决方法内存不能为read是指在计算机系统中,无法读取内存数据的问题。
这可能会导致程序运行失败或系统崩溃。
在面对这个问题时,我们需要采取一些解决方法来解决内存不能为read的情况。
首先,我们可以尝试重新启动计算机。
有时候,内存不能为read的问题可能是由于系统错误或程序冲突导致的。
通过重新启动计算机,可以清除临时数据和错误状态,有可能解决内存读取问题。
其次,我们可以检查硬件连接和内存条。
内存不能为read的问题有时可能是由于内存条接触不良或损坏导致的。
我们可以将内存条取下来,清洁插槽,然后重新插上内存条,确保连接良好。
如果内存条损坏,我们需要更换新的内存条来解决问题。
另外,我们还可以运行内存诊断工具来检测内存问题。
许多操作系统和计算机品牌都提供了内存诊断工具,可以帮助我们检测内存是否存在问题。
通过运行内存诊断工具,我们可以找出内存是否损坏或存在其他问题,并及时采取解决措施。
此外,我们还可以更新操作系统和驱动程序。
有时,内存不能为read的问题可能是由于操作系统或驱动程序的错误导致的。
通过更新操作系统和驱动程序,可以修复可能存在的错误,从而解决内存读取问题。
最后,我们可以尝试重装操作系统。
如果以上方法都无法解决内存不能为read 的问题,我们可以考虑重装操作系统。
在重装操作系统之前,我们需要备份重要数据,然后按照操作系统的安装步骤进行操作。
重装操作系统可以清除系统错误和问题,从而解决内存读取问题。
总之,内存不能为read的问题可能会给我们的计算机系统带来严重影响,但我们可以通过重新启动计算机、检查硬件连接、运行内存诊断工具、更新操作系统和驱动程序以及重装操作系统等方法来解决这个问题。
希望本文提供的解决方法能够帮助到遇到内存不能为read问题的用户,让他们的计算机系统恢复正常运行。
内存读取错误的原因1.硬件故障:硬件故障可能是导致内存读取错误的最常见原因之一、例如,内存模块可能会因为接触不良、插槽问题、电压不稳定等原因导致读取错误。
此外,其他硬件组件如主板、CPU等也可能出现故障导致内存读取错误。
2.软件问题:软件问题也可能导致内存读取错误。
例如,操作系统上的一个错误代码或驱动程序的错误更新可能会导致内存读取错误。
此外,恶意软件或病毒可能会损坏内存中的数据,也可能导致内存读取错误。
3.内存过载:当计算机的内存不足时,可能会导致内存读取错误。
这通常发生在运行需要大量内存的程序或同时运行多个程序时。
计算机需要加载和写入大量数据,内存可能无法跟上,导致读取错误。
4.错误的内存管理:不正确的内存管理可能导致内存读取错误。
例如,内存泄漏可能会导致内存资源枯竭,从而导致读取错误。
此外,分配给不同程序的内存可能会发生冲突,导致读取错误。
5.电磁干扰:电磁干扰可能导致内存读取错误。
强电磁场或电磁波可能会影响内存模块中的电信号,导致读取错误。
6.外部干扰:外部设备、线缆或其他电子设备可能干扰内存读取。
如果外部设备或线缆未正确接地或屏蔽,可能导致电磁干扰,进而导致读取错误。
7.软件错误:软件编写错误可能导致内存读取错误。
例如,如果程序员在读取内存之前未正确初始化变量,可能会导致读取错误。
8.超频:当计算机的内存超频时,可能会导致内存读取错误。
超频可能导致电压过高或过低,无法正确读取内存数据。
9.温度问题:高温环境中,硬件组件可能变得不稳定,例如内存芯片可能受到热膨胀的影响,导致内存读取错误。
10.人为错误:人为错误也可能导致内存读取错误。
例如,错误地安装内存模块、错误地操作计算机硬件等。
总结起来,内存读取错误可能是由硬件故障、软件问题、内存过载、错误的内存管理、电磁干扰、外部干扰、软件错误、超频、温度问题以及人为错误等多种原因导致的。
维护和保养计算机硬件,合理分配内存资源,编写良好的软件代码等措施可以帮助减少内存读取错误的发生。
内存不能read解决方法1、首先我们来看一下发生这样的错误提醒是什么原因:(1)驱动程序不稳定,或者与操作系统、计算机硬件不兼容,极易引发内存不能为read错误;(2)不小心加装了流氓软件或ie流氓插件;(3)正在加载的程序与已经运行的发生冲突,如有的杀毒软件实时监控程序,会和其它杀毒软件争夺系统控制权,导致内存不能为read;(4)病毒感染了病毒;(5)玩游戏时出现内存不能为read,则是因为显卡驱动不匹配;(6)夏天时硬件失灵,散热器不好,引致内存故障,无法为read;(7)内存条与主板兼容性问题,导致内存不能为read;2、下面我们去看一看化解方法:(1)我们可以使用工具来进行修复,内存不能为read工具在网上有好多版本,个人用过小黑内存不能为read工具,感觉还不错。
这款软件通过处理调用cmd指令逐步恢复此bug,很好的解决了因软件或者系统本身原因产生的不能为read错误。
(2)手动复原也可以,我们关上开始菜单,挑选运转程序,输出cmd;然后就可以关上命令提示符,命令行窗口输出for%1in(%windir%system32*.ocx)doregsvr32/s%1contrary,翻转完后再输入for%1in(%windir%system32*.dll)doregsvr32.exe/s%1时间比较短,恳请冷静等候,继续执行完后重新启动电脑即可。
修复命令的原理:前半句for%1in(%windir%system32*.dll)就是用以结点系统盘中system32目录文件夹下的所有dll文件,并且每找出一个dll文件,就将文件名赋值给%1,后半句doregsvr32.exe/s%1就是继续执行regsvr32.exe/s%1的命令,而regsvr32.exe则就是专门用作登记注册windows操作系统的动态链接库和activex控件的工具。
整句代码的意思就是结点搜寻系统盘system32目录文件夹下的所有dll文件并采用regsvr32.exe工具去再次登记注册一次。
运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
以上的情况相信大家都应该见到过,甚至说一些用户因为不希望经常出现这个错误提示而屡次重装系统。
产生这个现象的原因,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。
该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
以上的情况相信大家都应该见到过,甚至说一些用户因为不希望见到这个经常出现的错误提示而屡次重装系统。
相信普通用户应该不会理解那些复杂的十六进制代码。
出现这个现象的原因,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
一先说说硬件:一般来说,电脑硬件是很不容易坏的。
内存出现问题的可能性并不大,主要方面是:1、内存条坏了(二手内存情况居多),2、使用了有质量问题的内存,3、内存插在主板上的金手指部分灰尘太多。
4、使用不同品牌不同容量的内存,从而出现不兼容的情况。
5、超频带来的散热问题。
你可以使用一些测试软件(如MemTest)来检测一下内存,它可以彻底的检测出内存的稳定度。
二、如果都没有,那就从软件方面排除故障了。
先说原理:内存存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。
这就是“动态内存分配”,内存地址也就是编程中的“光标”。
内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。
当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。
作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。
计算机发生内存不能读写问题的研究
摘要:计算机系统中发生的类似“0x????????”指令引用的
“0x????????”内存,该内存不能为“read”;“0x????????”指令引用的“0x????????”内存,该内存不能为“written”的现象已经成为系统故障中的“非常有代表性和普遍存在”的问题,本文提供给用户解决该问题的具体办法、技巧和工具,并最终形成一个解决该类似问题的综合解决方案流程,使用户从这种循环往复的恶性循环中解脱出来,有效的保障计算机系统正常稳定的工作。
关键词:内存缓冲区;动态分配内存;光标;程序的健壮性
中图分类号:tp3
“0x????????”指令引用的“0x????????”内存,该内存不能为“read”;“0x????????”指令引用的“0x????????”内存,该内存不能为“written”已经成为引起系统故障的一个“非常有代表性和普遍性存在”的问题,面对这些不知所以然的十六进制代码用户头疼不已,往往只能恢复系统,但是这种“治标不治本”的方法会导致这种故障“频繁性”的发生,用户只能通过不断的恢复系统来解决它,这显然是不正确的,因此,有必要对这种“普遍性存在”的问题进行详细分析,找到这些问题的成因,提供给用户解决问题的正确思路和方法,才有利于用户更好的使用计算机进行正常的工作。
1探讨内存不能读或写的成因和解决思路
引起该问题的原因很复杂,但是从大的方面看有两点:一是硬件;
二是软件。
1.1硬件方面原因分析和解决思路
硬件引起内存不能读写的首要元凶就是内存条。
目前,内存条的质量还是过硬的,问题往往发生在计算机使用过久,其内部灰尘导致内存条的金手指与主板接触不良;其次,使用了不同品牌和不同容量的内存条,出现了内存条不兼容的问题;第三,因超频或显卡的散热等,导致内存条工作不稳定;第四,使用了杂牌或二手内存条造成的;第五,内存条物理性损坏。
根据以上原因分析,不难找到引起问题的故障点。
内存条与主板接触不良,可以清洁金手指或换个插槽;内存条出现兼容问题,可将其更换为同一品牌和容量的内存或只使用单条内存条;因过热导致内存条工作不稳定,可调整计算机的使用环境并杜绝超频cpu;尽量避免使用杂牌或二手内存。
也可以通过memtest工具来测试内存条的稳定性。
当然,还要注意市电电压波动过大或使用了劣质电源对内存条的破坏。
其次,硬盘的问题。
因为内存不是无限大,有时系统需要在硬盘开辟一部分区域作为“快速缓存”来使用,如果硬盘管理不善,碎片过多会导致此类问题发生。
可以通过磁盘碎片整理和修复磁盘工具解决,如果问题很严重,就要更换硬盘。
第三,硬件驱动的问题。
它常常发生在升级了某硬件的驱动并重新启动计算机后才发生的,尝试在安全模式下卸载升级的驱动程序即可。
如果是新做的系统,一定要安装好相关的主板驱动,这很重
要。
1.2软件方面原因分析和解决思路
因软件原因引起该问题的原因很复杂,只有了解有关原理才能更好的解决该问题。
首先,内存中存取数据的区域被称为“缓冲区”。
若程序向缓冲区存放数据,就必须通过操作系统的功能函数提出申请。
如果申请内存成功,函数就会返回程序一个内存地址,程序通过这个内存地址才能使用分配给它的缓冲区,这就是“动态内存分配”。
这个内存地址在编程中称之为“光标”。
但内存资源不是无限的,程序申请不是每一次都成功,如果申请内存失败,函数会返回一个0值,但这个0值已不在是分配给程序的光标,而是系统通知程序申请失败的标志,因此,任何程序在申请内存的过程中都需要判断返回的值是否为0,如果是,则应该采取挽救的措施,这就是对“程序的健壮性”的要求。
如果程序在返回值是0的情况下不作判断,想当然的认为这是系统返回给它的光标,在程序执行后就会往0内存地址写入数据。
而系统中0内存地址是存放至关重要的“中断描述符表”的,绝对不允许任何程序使用。
在无系统保护机制的dos系统下发生这样的问题,系统直接当机,而在有系统保护机制的windows 系统下,系统为避免错误继续扩大,会强制关闭“发生问题的应用程序,并收回其所占用的所有资源”。
这时就会出现内存不能为写的错误,并指出被引用的内存地址为“0x00000000”。
因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序
(包括被病毒感染),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。
有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有记忆”等等。
注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,出错的程序同样会被操作系统终止执行,回收全部资源。
像这样的情况都属于程序自身的bug,用户往往可在特定的操作顺序下重现错误。
根据以上的理论,可以概括出解决该问题的常见思路。
首先,病毒问题。
病毒会修改系统文件,更改系统参数,对于这样的问题,
只有杀毒。
一些杀毒软件也会产生该问题,因杀毒软件的实时监控功能是要监控系统底层,容易与系统和一些软件发生冲突,可以尝试卸载它解决问题。
其次,软件损坏。
通过恢复其初始状态或升级该软件,并打上相关补丁来解决。
例如ie浏览器经常会发生“0x70dcf39f”指令引用“0x000000”内存,该内存不能read,要终止程序请单击“确定”信息框,单击“确定”后,又出现“发生内部错误,你正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,ie浏览器也被关闭。
通过相同版本的ie覆盖安装或升级的办法修复ie被破坏的文件来解决,再看看是否有最新补丁需要安装。
第三,软件有bug。
通过打补丁或将软件升级到最新版本来解决。
例如用户经常碰到这样的问题,某某软件以前使用正常可是现在使用怎么不正常了,使用或关闭软件时还出现“ox????????”指令引用了“0x???????”内存,该内存不能read。
通常该问题是软件出现了新的漏洞,在没有及时打补丁的情况下被病毒钻空子了。
用户可利用漏洞修复工具提供的信息来查看软件是否存在严重漏洞来
解决,并建议用户尽量不使用破解版或测试版软件来减少该问题的发生。
第四,软件与其它软件有冲突。
如果是新安装软件造成的,卸载它试试。
第五,操作系统自身的bug。
注意官方发布的更新程序要及时打上,尤其是
与内存读写操作有关的windows management instrumentation
服务。
如果该服务有错误,也会导致系统弹出内存读写错误的提示,可尝试在“服务”管理窗口中找到该服务并且手动停止该服务,再备份c:\windows\system32\wbem\repository目录下所有的文件后再删除他们,重新启动系统后再次启用该服务,如果问题解决就说明该服务确实被破坏了。
2结束语
造成内存不能读写的原因很复杂,借鉴以上的方法也未必能解决所有的内存读写问题。
本文希望能够作到抛砖引玉,帮助大家在解决类似问题的过程中不断积累经验。
同时,也强烈建议大家在解决
类似的问题过程中,要十分注意“发生问题前的计算机状态和自己所做的操作”,这样解决问题才能定位明确和易操作。
参考文献:
[1]microsoft论坛,2009.。