恐怖片资源百度云:"0x1000556c"指令引用的"0x1000556c"内存.该内存不能为"written".

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 01:28:21
"0x1000556c"指令引用的"0x1000556c"内存.该内存不能为"written". 要终止程序,请单击"确定". 要调试程序,请单击"取消". 但无论单击哪个,都问题照旧.以致于我不能打开大多windows应用程序.哪位大虾帮忙解决一下,急呀!!

使用 windows操作系统时,可能会遇到这样的错误信息:“0X?????指令引用的0X00000000内存,该内存不能written”
,然后运用程序被关闭。如果是windows xp系统,还会弹出发送错误窗口。遇到这种情况,很多人会将所有的过错都推到windows身上。其实,这个错误并不一定是系统不稳定造成的,而且原因是多方面的。

一、内存分配失败惹的祸

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

二、应用程序自身的BUG

在使用动态内存分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。失效了的内存被系统收回,其访问权已经不属于该应用程序。因此,读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作系统终止运行,回收全部的资源。
像这种属于程序自身的BUG,往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址不一定为“0X000000”,而是其他随机数字。

三、解决的方法

如果系统经常有所提到的错误提示,下面建议可能会有帮助:
1、查看系统中是否有木马或病毒。这类程序为了控制系统,往往不负责任地修改系统,从而导致操作系统异常。平常应加强安全意识,对来历不明的程序绝不执行。定期用反病毒软件检查系统,保持系统干净。
2、更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意官方发布的升级程序。
3、更新应用程序。如果旧版本的应用程序出现这样的错误,软件厂商通常会马上推出更新版本来修复BUG。
4、注意软件版本问题。例如winamp这些支持插件功能的软件,软件和插件本身都有众多的版本,不同版本之间可能出现不兼容的情况,造成程序不稳定,甚至出错。
5、使用其他应用程序来代替。如果应用程序是一些找不到更新的共享软件或者厂商已经停止更新的,那么只能用其他应用程序来代替这些出错的程序了。

一般是软件不过关引起的内存地址冲突,不要开那垃圾软件就可以了