首页 >> 综合问答 >

应用程序发生异常(未知的软件异常解决方法)

2023-04-24 22:05:54 来源: 用户: 

大家好,综合小编来为大家讲解下应用程序发生异常,未知的软件异常解决方法这个很多人还不知道,现在让我们一起来看看吧!

一般来说,电脑硬件不容易坏。内存问题不太可能(除非你的内存真的是一堆杂牌),主要方面有:1。内存条坏了(大多是二手内存),2。使用有质量问题的内存,3。

插在主板上的内存金手指部分灰尘太多。4。使用不同品牌和容量的内存,导致不兼容。5。超频导致的散热问题。可以用软件MemTest来检查内存,可以彻底检查内存的稳定性。

第二,如果没有,则排除软件故障。

先说原理:内存中有一个存放数据的地方叫缓冲区。当程序将数据放入缓冲区时,需要操作系统提供的“函数function”来应用。如果内存分配成功,该函数会将新打开的内存区域的地址返回给应用程序。

应用程序可以通过这个地址使用这个内存。这就是“动态内存分配”,内存地址也是编程中的“光标”。内存并不总是可用和取之不尽的,有时内存分配会失败。当分配失败时,系统函数将返回值0。

此时,返回值“0”不再表示新启用的光标,而是系统发送给应用程序的通知,告知发生了错误。作为应用程序,应该在每次内存应用后检查返回值是否为0。如果是,说明有故障,要采取一些措施挽救。

这增强了程序的“健壮性”。如果应用程序不检查这个错误,它会认为这个值是根据“思维惯性”分配给它的可用游标,并在后续执行中继续使用这个内存。

真正的0地址存储区存储的是计算机系统中最重要的“中断描述符表”,是绝对不允许应用程序使用的。在没有保护机制的操作系统(比如DOS)中,向这个地址写数据会导致立即关机,而在健壮的操作系统中,

如Windows,该操作将立即被系统的保护机制捕获。因此,操作系统会强制关闭错误的应用程序,以防止其错误扩大。这时,会出现上述内存无法“读取”的错误。

并指出引用的内存地址是“0x00000000”。内存分配失败的原因有很多,比如内存不足,系统函数版本不匹配等。所以这种分配失败在操作系统使用时间长了之后更为常见。

在安装了各种应用程序(包括无意安装的病毒程序)并更改了大量系统参数和系统文件后。

在使用动态分配的应用程序中,有时会发生这样的情况,程序试图读写一个“应该可用”的内存,但是由于某种原因,预期的可用游标失败了。有可能“忘记”向操作系统请求分配。

也可能是程序本身在某个时候取消了这段记忆,“没注意”等等。注销的内存被系统回收,其访问权不再属于应用程序,因此读写操作也会触发系统的保护机制。

企图“违法”的程序唯一的最终结果就是被操作终止,所有资源被收回。计算机世界的法则还是比人类有效和严厉得多!像这样的情况属于程序本身的BUG,你经常可以在一个特定的操作序列中重现错误。

无效光标不一定是0,所以错误提示中的内存地址不一定是“0x00000000”,也可以是其他随机数。

首先,建议:

1、检查系统中是否有木马或病毒。这类程序为了控制系统,往往会不负责任地修改系统,导致操作系统异常。平时要加强信息安全意识,千万不要对来源不明的可执行程序感到好奇。

2、更新操作系统,让操作系统安装程序复制正确版本的系统文件,修正系统参数。有时候操作系统本身也有bug,要注意安装官方发布的升级程序。

3、尽量使用最新的正式版应用,Beta版,试用版都会有bug。

4.删除并重新创建WinntSystem32WbemRepository文件夹中的文件:右键单击桌面上的“我的电脑”,然后单击“管理”。在服务和应用程序下,单击服务,

然后关闭并停止windows management instrumentation服务。删除WinntSystem32WbemRepository文件夹中的所有文件。

(请在删除之前备份这些文件。)打开服务和应用程序,单击服务,然后打开并启动Windows Management Instrumentation服务。当服务重新启动时,

将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWBEMCIMOMAutorecover MOFs

下面搜集几个例子给大家分析:

例一:IE浏览器出现“0x0a8ba9ef”指令引用的“0x03713644” 内存,或者“0x70dcf39f”指令引用的“0x00000000”内存。该内存不能为“read”。要终止程序,

请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。解决方法:

1、 开始-运行窗口,输入“regsvr32 actxprxy.dll”回车,接着会出现一个信息对话框“DllRegisterServer in actxprxy.dll succeeded”,

确定。再依次运行以下命令。(这个方法有人说没必要,但重新注册一下那些.dll对系统也没有坏处,反正多方下手,能解决问题就行。)

regsvr32 shdocvw.dll

regsvr32 oleaut32.dll

regsvr32 actxprxy.dll

regsvr32 mshtml.dll

regsvr32 msjava.dll

regsvr32 browseui.dll

regsvr32 urlmon.dll

2、 修复或升级IE浏览器,同时打上系统补丁。看过其中一个修复方法是,把系统还原到系统初始的状态下。建议将IE升级到了6.0。

例二:有些应用程序错误: “0x7cd64998” 指令参考的“0x14c96730” 内存。该内存不能为“read”。解决方法:Win XP的“预读取”技术这种最佳化技术也被用到了应用程序上,

系统对每一个应用程序的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟“内存映像”,并把这些信息储存到WindowsPrefetch文件夹。一旦建立了映像,应用软件的装入速度大大提高。

XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。建议将虚拟内存撤换,删除WindowsPrefetch目录下所有*.PF文件,让windows重新收集程序的物理地址。

例三:在XP下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,

而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,

并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:winntapppatchslayerui.dll。右键,属性,

也会出现兼容性的选项。

例四:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。

解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,

因此在关闭RealOne 之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

例五:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。

解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

例六:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内存,该内存不能为“read” ,并且提示Client.dat程序错误。解决方法:重装显卡的最新驱动程序,

然后下载并且安装DirectX9.0。

例七:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,

本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章