电脑总有应用错误,应用在0x7715c52b出现异常的未知软件异常(0xc0000096)。
日期:2008-10-30 11:29:30来源:每周阅读次数:37
-
使用Windows操作系统的人有时会遇到以下错误信息:“0x 000000000 0x指令引用的内存无法写入”,然后应用程序关闭。其实这个错误不一定是Windows的不稳定造成的。本文将简单分析这种错误的常见原因。
首先,应用程序无法检查内存分配。
当一个程序需要一块内存来存储数据时,需要调用操作系统提供的“函数function”来申请。如果内存分配成功,函数会将新打开的内存区域的地址返回给应用程序,应用程序可以通过这个地址使用这个内存。这就是“动态内存分配”,内存地址也是编程中的“指针”。
内存并不总是可用和取之不尽的,有时内存分配会失败。当分配失败时,系统函数将返回值0。此时,返回值“0”不再指示新启用的指针,而是系统发送给应用程序的一个通知,表明发生了错误。作为应用程序,应该在每次内存应用后检查返回值是否为0。如果是,则说明存在故障,需要采取一些措施来挽救,增强了程序的“健壮性”。
如果应用程序不检查这个错误,它会认为这个值是根据“思维惯性”分配给它的一个可用指针,并在后续操作中继续使用这个内存。真正的0地址存储区存储的是计算机系统中最重要的“中断描述符表”,是绝对不允许应用程序使用的。在一个没有保护机制的操作系统(比如DOS)中,向这个地址写数据会导致立即崩溃,而在一个健壮的操作系统中,比如Windows,这个操作会立即被系统的保护机制捕获,结果是操作系统会强制关闭错误的应用程序,防止其错误扩大。此时会出现上述“写内存”错误,指出引用的内存地址为“0x00000000”。
内存分配失败的原因有很多,比如内存不足,系统函数版本不匹配等。所以这种分配失败多见于操作系统使用时间较长,安装了多种应用程序(包括无意中安装的病毒程序),大量更改系统参数和系统文件之后。
二是应用程序由于自身BUG引用了异常内存指针。
在使用动态分配的应用程序中,有时会发生这样的情况,程序试图读写一个“应该可用”的内存,但由于某种原因,这个预期的可用指针已经失败了。可能是“忘记”向操作系统要求分配,也可能是程序本身在某个时候取消了这个内存,“没注意”等等。被注销的内存被系统回收,其访问权不再属于应用程序,因此读写操作也会触发系统的保护机制,而试图“违法”的程序唯一的最终结果就是被操作停止,收回所有资源。计算机世界的法则还是比人类有效和严厉得多!
像这样的情况属于程序本身的BUG,你经常可以在一个特定的操作序列中重现错误。无效指针不总是0,所以错误提示中的内存地址不一定是“0x00000000”,也可以是其他随机数。
如果系统经常出现上述错误提示,以下建议可能会有所帮助:
1.检查系统中是否有特洛伊病毒。这类程序为了控制系统,往往会不负责任地修改系统,导致操作系统异常。平时要加强信息安全意识,千万不要对来源不明的可执行程序感到好奇。
2.更新操作系统,使操作系统的安装程序能够复制正确版本的系统文件并修正系统参数。有时候操作系统本身也有bug,要注意安装官方发布的升级程序。
3.尝试应用程序的新版本。
第三,解决方案
1.问题提示:
在运行一些程序时,有时会出现内存错误提示,然后程序就会关闭。
“0x”指令引用了“0x”内存。存储器不能被“读取”。
0x指令引用的0x内存,不能“写入”。
总的来说,这种现象有很多方面。一是硬件有问题,也就是内存,二是软件有很多问题。
2.故障分析:
A.硬件:
一般来说,内存出现问题的可能性不大。主要方面是:内存条坏了,内存质量有问题,有两个不同品牌不同容量的内存,也容易出现不兼容的情况。同时一定要注意散热问题,尤其是超频之后。可以用软件MemTest来检查内存,可以彻底检查内存的稳定性。
如果是双内存,并且不同品牌的内存条混用或者买了二手内存,就会出现这个问题。这时候就要检查是内存有问题还是和其他硬件不兼容了。
B.软件:
先简单说一下原理:内存中有一个用来存储数据的地方叫做buffer。程序把数据放在一个地方,会因为空间不够而溢出。比如一个水桶只能装一斤水。放入两斤水,就会溢出来。系统显示在屏幕上。这个问题经常出现在windows2000和XP系统中。Windows 2000/XP对硬件的要求非常严格。在类似Windows 98的资源死锁、溢出或非法操作的情况下,为了保持系统稳定,会出现上述情况。此外,也可能是硬件设备之间兼容性差造成的。
C.举例说明:
例1:打开IE浏览器或者几分钟后会出现“0x70dcf39f”指令引用的“0x00000000”内存。存储器不能被“读取”。要终止程序,请单击“确定”。单击“确定”后,将出现消息框“出现内部错误,您正在使用的一个窗口即将关闭”。关闭这个提示信息后,IE浏览器也关闭了。
解决方法:修复或升级IE浏览器,同时打补丁。我见过的一种修复方法是WinXP自升级,即WinXP升级到WinXP。其实这个方法就是把系统恢复到初始状态。比如你的IE升级到了7.0,升级后会被IE6.0取代。
例2:双击windows xp下光盘中的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。存储器不能被“写入”。要终止程序,单击“确定”,但它在Windows 98中正常运行。
解决方法:这可能是系统的兼容性问题。对于winXP系统,右击“AutoRun.exe”文件,属性和兼容性,选择“在兼容模式下运行此程序”,选择“Windows 98/Me”。Win2000,如果SP打了补丁,只要启动运行,输入:regsvr 32 c:wintappatchlayerui.dll即可。右键单击,属性和兼容性选项也会出现。
例3:关闭RealOne Gold时出现错误。以前是正常的,但是最近“0xffffffff”指令引用的“0xffffffff”内存在每次关闭时都会出现。这种记忆不可能是“已读”的暗示。
解决方法:当使用的输入法是微软拼音输入法2003,并且语言栏是隐藏的(不隐藏的时候没问题),关闭RealOne的时候会出现这个问题,所以你可以在关闭RealOne之前显示语言栏或者使用其他任何输入法作为当前输入法来解决这个问题。
例4:玩家不会玩。每次提示“Ox060692f6”指令引用的“Oxff000011”内存无法“读取”时,请按OK终止程序。
解决方案:尝试重新加载播放器。如果会重装,可以尝试从官网下载相应版本的补丁。还没有,所以我不得不尝试另一个球员。
例5:双击游戏的快捷方式。指令“Ox77f5cdO”引用内存“Oxffffffff”,无法“读取”,提示Client.dat程序错误。
解决方法:重新安装显卡最新驱动,然后下载安装DirectX9.0。
例6:电脑出现错误信息:“0*772b548f”指令引用的“0*00303033”内存,无法“写入”,然后QQ自动注销。
解决方法:这是对方利用QQ的BUG发送特殊代码,在QQ中出错。只要打补丁或者升级到最新版本就没事了。
例7:当XP系统关闭网页时,会弹出“tbrowser.exe因问题需要关闭”,然后弹出0x03e7c738指令引用的0x03e7c738内存,无法读取。
解决方法:先杀毒,如果已经安装了浏览增强等软件,请卸载。
示例8:当从桌面或“开始”菜单打开任何程序时,都会出现一条错误消息:“0x00000000”内存被“0x ...”引用指令不能被“读取”。省略号代表一个变量值。而且从运行中打开程序也没问题。
解决方法:运行regedit进入注册表,在HKEY _ local _ MachinesoftWaremicrosoft windows currentversionexplorershellexecutehuceucks下,应该只有一个正常的键值“{ aeb 6717e-7e 19-1d 0-97ee-00c 04 FD 91972 }”,其他的都要删除(当然默认键值应该不会删除)。
例9:系统不稳定,多次重装系统,经常随机出现Explorer- application错误,“0x4a01259d”指令引用的“0x00000000”内存。存储器不能被“读取”。要终止程序,请单击“确定”。若要调试程序,请单击“取消”。如果您单击确定,windows桌面将会消失。之前的系统也出现过这个问题。不知道是不是硬件问题?
解决方法:内存兼容问题!如果出现这种问题,用户可以打开机器,调整内存的位置,看看是否可以解决问题。如果问题仍然存在,他们可以与你的朋友交换记忆。
通过上面的例子,我们可以看出失败的原因是多方面的。下面列出了已经提到的和可能出现的原因,方便参考。
1.问题的原因-解决方案
2.内存条损坏-更换内存条
3.双内存不兼容-使用相同品牌的内存或仅使用一个内存。
4.内存质量问题-更换内存条
5.散热——加强机箱内部的散热
6.内存和主板没有正确插入或与其他硬件不兼容等。-重新插入内存或更换内存。
7.硬盘有问题-更换硬盘
8.驱动器问题-重新安装驱动器。如果是新系统,要先安装主板驱动。
9.软件损坏-重新安装软件
10.软件缺陷-修补或使用最新版本。
11.软件和系统不兼容-修补软件或尝试系统的兼容模式。
12.软件和软件是有冲突的——如果最近有什么新软件装了,试试卸载。
13.使用软件到其他相关软件出现问题——重新安装相关软件。比如播放某种格式的文件时出现错误,可能是这个文件的解码器有问题。
14.病毒问题-防病毒
15.杀毒软件与系统或软件冲突——因为杀毒软件进入底层监控系统,可能会与某些软件冲突,所以尝试卸载。
16.系统本身有问题——有时候操作系统本身也有bug。注意安装官方发布的升级程序,比如SP的补丁,最好装上。如果没有,请重新安装系统或更换为另一个版本。