内存不能为read的解决办法
内存不能为read怎么解决_原因及解决方法

内存不能为read怎么解决_原因及解决方法一般来说,内存出现问题的可能*并不大,接下来是小编为大家收集整理的内存不能为read怎么解决,赶紧学习起来吧!出现/原因:1驱动程序不稳定,或者与*作系统、计算机硬件不兼容,极易引发内存不能为read错误;(由于开发者水平差异较大,个别rp和技术都很差的程序员也开始写驱动程序了,小则引起“内存不能为read”,大则引发机器蓝屏,最后还把责任推卸给别人。
)蓝屏代码:d805ab914ba4fef0ba3473226e713e6a.2不小心安装了流氓软件或ie流氓*件;3正在加载的程序与已经运行的发生冲突,如有的杀毒软件实时*程序,会和其它杀毒软件争夺系统控制权,导致内存不能为read;4计算机感染了病毒;5玩游戏时出现内存不能为read,则是因为显卡驱动不匹配;6夏天时硬件过热,散热不好,导致内存故障,不能为read;7内存条与主板兼容*问题,导致内存不能为read。
步骤/方法1首先我们打开开始菜单-运行cmd命令行,cmd窗口中输入cmd。
2在命令行中输入:for%1in(%windir%system32*.dll)doregsvr32.exe/s%1,在这里我们可以先将此命令复制,然后利用cmd命令编辑的粘贴到命令行中,然后点击回车,这时候需要等一段时间。
如下图所示:利用粘贴功能将拷贝的代码粘贴到编辑器上【小技巧】如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:,使用下面的“编辑-粘贴”功能就不容易输错了。
在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。
直到你的指示灯不闪了再做别的。
3然后点击回车,这时候需要等一段时间,如下图所示:【小提示】输入正确的话会看到飞快地滚屏否则……否则....失败就是没这效果。
回车后慢慢等(需要点时间1-2分钟)都运行完再打开看。
4还有一种情况就是:一般来讲就是给系统打上补丁和更换内存、给内存换个*槽这3种方法来解决。
该内存不能为“read”的几个解决方案

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

完成后重新启动机器。
六、如果你电脑里面存在NET.Framework这个微软的组件服务而你又不使用它→那么卸载这个服务可能会解决问题:开始→设置→控制面板→添加删除程序→NET.Framework→删除(如果你必须使用就重新启动电脑后再次安装NET.Framework)。
2、安装过的Domino这程序导致有问题,你可以在开始→运行→msconfig→启动项目→关闭Domino启动项→如果关闭不了→可以用卡卡助手之类的系统设置软件把它强行关掉→如果还是不行的→证明你系统中毒→那就重新安装或者恢复系统备份彻底解决。
三、某些系统服务被禁用可能导致类似问题,例如QoS RSVP本地通信控制安装功能被禁用时可能会提示RPC服务器不可用。解决方法:我的电脑右键→管理→服务和应用程序→服务→双击QoS RSVP项目将启动类型改为“手动”或“自动”→关闭窗口→重新启动计算机。如果其它服务被禁用导致的问题也可用这个方法重新启用来解决。
简单有效的处理方法是看错误提示,哪一个软件引起的冲突就卸载那个软件,重新启动机器以后首先关闭杀毒软件,重新运行安装。
2、打开CMD窗口输入如下命令:
for %i in (%windir%\system32\*.dll) do regsvr32.exe /s %i 回车
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车
两条分别运行完成后重启机器。
开始→运行→输入cmd,打开“命令提示符”窗口→输入字符串命令sfc/scannow→回车→耐心等待命令程序对每个系统文件搜索扫描→一旦发现系统文件的版本不正确或者系统文件已经损坏→它就能自动弹出提示界面→要求插入Windows系统的安装光盘→从中提取正常的系统文件来替代不正常的系统文件→达到修复系统文件的目的→最后重新启动计算机。
lenovo内存不能为read的解决方法

lenovo内存不能为read的解决方法Lenovo电脑内存不能读取的问题是很常见的故障之一。
这种情况下,用户将无法访问存储在内存中的任何数据,导致电脑无法正常运行。
本文将介绍一些解决Lenovo内存不能读取的方法,帮助用户解决这个问题。
1. 检查内存插槽:首先,我们需要检查内存条是否正确插入到电脑的内存插槽中。
有时候,内存条可能会因为插入不良而导致读取失败。
我们可以尝试重新插拔内存条,确保它们牢固地连接到插槽上。
2. 清洁内存插槽:内存插槽可能会因为灰尘或脏污而导致接触不良,从而导致内存读取失败。
我们可以使用压缩气罐或棉签轻轻地清洁内存插槽,以确保良好的接触。
3. 更换内存条:如果内存条经过检查后仍然无法读取,那么可能是内存条本身出现问题。
我们可以尝试更换一个新的内存条,确保它与电脑兼容,并且正确插入到内存插槽中。
4. 更新BIOS:BIOS是计算机的基本输入输出系统,它负责管理硬件和软件之间的通信。
有时候,旧的BIOS版本可能会导致内存读取问题。
我们可以尝试更新计算机的BIOS版本,以解决内存读取失败的问题。
5. 检查电脑病毒:计算机病毒可能会破坏内存中的数据,导致内存读取失败。
我们可以运行杀毒软件,对计算机进行全面扫描,清除任何病毒或恶意软件。
6. 运行内存诊断工具:Lenovo电脑通常配备了内置的内存诊断工具,可以帮助我们检测内存问题。
我们可以进入计算机的BIOS设置界面,找到内存诊断工具,并运行它进行测试和修复。
7. 检查操作系统:有时候,操作系统的错误或损坏也可能导致内存读取失败。
我们可以尝试重新安装操作系统或修复操作系统文件,以解决这个问题。
8. 咨询专业技术支持:如果以上方法都无法解决内存读取问题,我们可以咨询Lenovo的专业技术支持团队,寻求他们的帮助和建议。
他们可能会提供更高级的解决方案,以修复内存读取问题。
总结起来,Lenovo电脑内存不能读取的问题可能是由多种原因引起的。
该内存不能为read解决方法

该内存不能为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如何解决

指令引用的内存不能为read如何解决
有时候我们会遇到某条指令引用的内存该内存不能为“read”的情况。
出现这种情况有两方面原因,一是硬件即内存方面的问题;二是软件方面的问题。
那么遇到这种情况该怎么解决呢?下面就为大家介绍一下。
硬件方面
•1
确定内存条是否损坏,若损坏要及时更换内存条。
•2
加强机箱内部的散热,及时清理机箱内部的灰尘。
防止机箱内过多的灰尘,造成散热不畅,影响电脑性能。
软件方面
•1
在桌面上右击我的电脑,然后单击“管理”。
•2
在"服务和应用程序"下,单击“服务”,然后关闭并停止Windows Management Instrumentation 服务。
•3
删除 System32\Wbem\Repository 文件夹中的所有文件。
•4
打开"服务和应用程序",单击服务,然后打开并启动Windows Management Instrumentation 服务。
当服务重新启动时,将基于注册表项中所提供的信息重新创建这些文件。
解决内存不能READ的解决办法

解决内存不能READ的解决办法运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。
该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
以上的情况相信大家都应该见到过,甚至说一些网友因为不爽于这个经常出现的错误提示而屡次重装系统。
相信普通用户应该不会理解那些复杂的十六进制代码。
出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
一:先说说硬件:一般来说,电脑硬件是很不容易坏的。
内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。
内存条坏了(二手内存情况居多)、2。
使用了有质量问题的内存,3。
内存插在主板上的金手指部分灰尘太多。
4。
使用不同品牌不同容量的内存,从而出现不兼容的情况。
5。
超频带来的散热问题。
你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
二、如果都没有,那就从软件方面排除故障了。
先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。
这就是“动态内存分配”,内存地址也就是编程中的“光标”。
内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。
当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。
作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。
若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。
内存不能为read怎么办?教你内存不能为“read”怎么解决?

内存不能为read怎么办?教你内存不能为“read”怎么解决?使用电脑的过程中,难免会遇到各种问题,比如说很多朋友都遇到过这类内存不能为read的提示,但是不知道怎么回事。
其实,出现内存不能为“read”的原因比较多,比如说驱动程序不稳定以及程序不兼容。
下面就来教你内存不能为“read”怎么解决吧!内存不能为read常见的7种原因!1、电脑系统驱动程序不稳定/不兼容,导致内存不能为read2、电脑安装了流氓软件或IE流氓插件3、正在加载的程序与已经运行的程序发生冲突,比如杀毒软件之间争夺系统控制权,导致内存不能为read4、电脑感染了病毒,导致内存不能为read5、如果是玩游戏出现内存不能为Read,则是因为显卡驱动不匹6、夏天硬件散热不凉,导致内存故障不能为Read7、电脑硬件内存条与主板兼容性,导致内存不能为Read内存不能为read常见的8种解决方法!1、配置错误:重启电脑,按F8进入安全模式,选择最后一次正确配置并回车即可2、系统漏洞:使用安全杀毒软件,对电脑进行全面杀毒,之后修复系统就可以了3、软件冲突:卸载不常用的软件,保持系统稳定,尤其是同类型的软件最容易出现不兼容,保留一个就可以了4、驱动版本过旧:使用第三方驱动软件,更新升级显卡驱动、声卡驱动等等5、病毒木马/可疑启动项:杀毒软件,全盘扫描与自定义扫描,扫描完毕后,在隔离区彻底删除即可6、恶评插件:同样使用杀毒安全软件清理恶评插件7、修复内存不能为read:去网上下载一个内存不能为read的修复工具,点击修复即可8、命令提示符修复法:点击开始菜单运行,输入cmd,在命令提示符下页面输入特定代码修复教你内存不能为“read”怎么解决?方法一:借助工具修复使用内存不能为read的修复工具,在网上下载安装即可,它可以通过处理调用CMD指令逐步恢复此BUG,可以很好地解决因软件或者系统本身原因产生的不能为read错误方法二:手动修复1、打开开始菜单,选择运行程序,输入cmd2、打开命令提示符,输入for %1 in (%windir%system32*.ocx) do regsvr32 /s %1回车3、滚动完毕后再输入for %1 in (%windir%system32*.dll) do regsvr32.exe /s %14、时间比较长,请耐心等待,执行完毕后重启电脑即可以上就是内存不能为“read”的解决方法了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“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(转自网络)2.内存指令不能read,这是在电脑使用中经常出现的问题,内存是主板上的存储部件,是CPU直接与之沟通,并用其存放当前正在使用的(即执行中)的数据和命令的重要部件。
当你用键盘或鼠标输入某个命令后,CPU就会解释命令并将指令或程式载入到内存中,这样程序才能够被执行。
而一旦内存发生问题了,程序就不能被执行,因此就产生了前面我们提到的“该内存不能为read或written”错误的警告。
当然,出现了“该内存不能为read或written”的故障也不一定都是内存的问题,电脑中了病毒或木马以及运行的程序本身的Bug也会造成这种现象。
很难分清究竟是什么原因造成的,一时半会不好排除,但没关系,按确定、取消,重启,即可。
感兴趣的网友可用下述办法试着去解决:1、打开的程序太多,如果同时打开的文档过多或者运行的程序过多,没有足够的内存运行其他程序,要随时关闭不用的程序和窗口。
2、自动运行的程序太多,关闭一些启动程序,开始-运行-Msconfig---启动,除杀毒软件、输入法外一般的程序都可以关掉。
3、物理内存过小,加大婚理内存;内存和主板没插好或其他硬件不兼容重插内存或换个插槽;双内存不兼容,要使用同品牌的内存或只要一条内存;劣质内存条或内存条坏了更换内存条;合理设置虚拟内存。
4、市电电压过大的波动,或者PC机上使用劣质电源,都会给内存带来损害,更换功率大、质量好的电源。
5、PC机箱内充满灰尘,或者PC工作环境相对潮湿,也会造成运行不正常。
及时除尘。
6 、CPU、显卡散热问题,改善散热。
7、硬盘有问题,扫描修复或更换硬盘。
8 、驱动问题重装更新驱动。
9、非法操作,系统无法执行。
10、软件损坏重装软件;软件有BUG 打补丁或更新到最新版本;软件和系统不兼容给软件打上补丁或是试试系统的兼容模式;软件和软件之间有冲突如果最近安装了什么新软件,卸载了试试。
11、系统本身有问题有时候操作系统本身也会有BUG,要注意安装官方发行的更新程序最好及时补上,必要时重装系统。
12、病毒问题杀毒;杀毒软件与系统或软件相冲突由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试13、试打开CMD窗口输入如下命令:for %i in (%windir%\system32\*.dll) do regsvr32.exe /s %i 回车for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车重启。
3.0X000000该内存不能为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、检查系统中是否有木马或病毒。
这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。