指令0x0102800a引用了0x000000000存储器。该存储器不能被写入。这是什么意思?怎么解决?

使用Windows操作系统的人有时会遇到以下错误信息:“0x指令引用的内存0x00000000无法读写”,然后关闭应用程序。如果你问一些“专家”,得到的答案往往是“Windows这么不稳定”之类的愤慨和不屑。其实这个错误不一定是Windows的不稳定造成的。本文将简单分析这种错误的常见原因。

首先,应用程序无法检查内存分配。

当一个程序需要一块内存来存储数据时,需要调用操作系统提供的“函数function”来申请。如果内存分配成功,函数会将新打开的内存区域的地址返回给应用程序,应用程序可以通过这个地址使用这个内存。这就是“动态内存分配”,内存地址也是编程中的“指针”。

内存并不总是可用和取之不尽的,有时内存分配会失败。当分配失败时,系统函数将返回值0。此时,返回值“0”不再指示新启用的指针,而是系统发送给应用程序的一个通知,表明发生了错误。作为应用程序,应该在每次内存应用后检查返回值是否为0。如果是,则说明存在故障,需要采取一些措施来挽救,增强了程序的“健壮性”。

如果应用程序不检查这个错误,它会认为这个值是根据“思维惯性”分配给它的一个可用指针,并在后续操作中继续使用这个内存。真正的0地址存储区存储的是计算机系统中最重要的“中断描述符表”,是绝对不允许应用程序使用的。在一个没有保护机制的操作系统(比如DOS)中,向这个地址写数据会导致立即崩溃,而在一个健壮的操作系统中,比如Windows,这个操作会立即被系统的保护机制捕获,结果是操作系统会强制关闭错误的应用程序,防止其错误扩大。此时会出现上述“写内存”错误,指出引用的内存地址为“0x00000000”。

内存分配失败的原因有很多,比如内存不足,系统函数版本不匹配等。所以这种分配失败多见于操作系统使用时间较长,安装了多种应用程序(包括无意中安装的病毒程序),大量更改系统参数和系统文件之后。

二是应用程序由于自身BUG引用了异常内存指针。

在使用动态分配的应用程序中,有时会发生这样的情况,程序试图读写一个“应该可用”的内存,但由于某种原因,这个预期的可用指针已经失败了。可能是“忘记”向操作系统要求分配,也可能是程序本身在某个时候取消了这个内存,“没注意”等等。被注销的内存被系统回收,其访问权不再属于应用程序,因此读写操作也会触发系统的保护机制,而试图“违法”的程序唯一的最终结果就是被操作停止,收回所有资源。计算机世界的法则还是比人类有效和严厉得多!

像这样的情况属于程序本身的BUG,你经常可以在一个特定的操作序列中重现错误。无效指针不总是0,所以错误提示中的内存地址不一定是“0x00000000”,也可以是其他随机数。

如果系统经常出现上述错误提示,以下建议可能会有所帮助:

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

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

3.尝试应用程序的新版本。

这是由程序错误引起的。您可以更改程序设置或重新安装程序。

相信大家应该都看到了,甚至说有网友因为对这种频繁的错误提示不满意而反复重装系统。相信我们这样的普通用户应该看不懂那些复杂的十六进制代码。那些只是给微软亚洲研究院的研究人员的(开个玩笑)。

第三,软件还是硬件

在运行一些程序时,有时会出现内存错误提示,然后程序就会关闭。

“0x”指令引用了“0x”内存。存储器不能被“读取”。

“0x”指令引用的“0x”内存,无法“写入”

不知道你有没有过这样的断层?(0x之后的内容可能不一样。)

仔细看0x后面的内容。每个人的错误码不一样吗?但是他们的问题可能是一样的。出现此错误提示有两个原因。第一,硬件有问题,就是内存有问题。第二,软件有很多问题。

1,先说硬件:

一般来说,电脑硬件不容易坏。内存问题不太可能(除非你的内存真的是一堆杂牌)。主要方面有:

(1)内存条坏了(多为二手内存);

(2)使用有质量问题的内存;

(3)主板上插内存的金手指部分灰尘太多;

(4)使用不同品牌不同容量的内存,导致不兼容;

(5)超频导致的散热问题;

可以用软件MemTest来检查内存,可以彻底检查内存的稳定性。

如果您有双内存,并且不同品牌的内存芯片混用或者您购买二手内存,就会出现此问题。这时候你就要检查一下是不是内存有问题,还是和其他硬件不兼容。

2.如果以上条件都不存在,那么就从软件方面解决问题。

先简单说一下原理:内存中有一个用来存储数据的地方叫做buffer。程序把数据放在一个地方,会因为空间不够而溢出。比如一个水桶只能装一斤水。你放两斤水进去,就会溢出来。系统显示在屏幕上。这个问题经常出现在windows2000和XP系统中。Windows 2000/XP对硬件的要求非常严格。在类似Windows 98的资源死锁、溢出或非法操作的情况下,为了保持系统稳定,会出现上述情况。此外,也可能是硬件设备之间兼容性差造成的。

同时,由于系统运行是为了保护一段内存,其他用户程序无法访问该内存,当用户程序非法读取这些内存空间时也会出现这种错误。

第四,举几个例子:

1.问:“08ba9ef”指令引用的“0x03713644”内存无法“读取”。要终止程序,请单击“确定”。

答:IE出现错误,需要重置IE。

(1)打开“开始”菜单中的“运行”窗口,在其中输入“regsvr32 actxprxy.dll”,然后“确定”。然后会出现一个信息对话框“actxprxy.dll中的DLLRegisterserver”,再次点击“确定”。

(2)再次打开“运行”窗口,输入“regsvr 32 shdocvw.dll”。

(3)再次打开“运行”窗口,输入“regsvr 32 oleaut32.dll”。

(4)再次打开“运行”窗口,输入“regsvr 32 actxprxy.dll”。

(5)再次打开“运行”窗口,输入“regsvr 32 mshtml.dll”。

(6)再次打开“运行”窗口,输入“regsvr 32 msjava.dll”。

(7)再次打开“运行”窗口,输入“regsvr 32 browseui.dll”。

(8)再次打开“运行”窗口,输入“regsvr 32 urlmon.dll”。

2.询问“0x70dcf39f”指令引用的“0x00000000”内存。存储器不能被“读取”。要终止程序,请单击“确定”。

答:关闭提示信息后,IE浏览器也关闭。解决方法:修复或升级IE浏览器,同时给系统打补丁。确保你的IE升级到6.0。

3.问:RealOne Gold关闭时出现错误。以前是正常的,但是最近每次关闭的时候都会出现“0xffffffff”命令引用的内存“0xffffffff”。这种记忆不可能是“已读”的暗示。

答:当使用的输入法是微软拼音输入法2003,并且语言栏是隐藏的(不隐藏是没有问题的)时,关闭RealOne会出现这个问题,所以你可以在关闭RealOne之前显示语言栏或者使用其他任何输入法作为当前输入法来解决这个问题。

4.问:指令“Ox77f5cdO”指的是内存“OXFFFFFF”,无法“读取”。要终止程序,请单击“确定”。

回答:双击一个游戏的快捷方式,提示Client.dat程序错误。解决方法:重新安装显卡最新驱动,然后下载安装DirectX9.0。

5.问:指令“0x772b548f”引用的存储器“0x00303033”无法“写入”。要终止程序,请单击“确定”。

答:QQ自动下线。再次打开QQ,发现发来的消息有十几条。解决方法:这是对方利用QQ BUG,发送特殊代码,QQ出错,只要打补丁或者升级到最新版本。

6.问:打开IE浏览器或者几分钟后会出现“0x70dcf39f”指令引用的“0x00000000”内存。存储器不能被“读取”。要终止程序,请单击“确定”。单击“确定”后,将出现消息框“出现内部错误,您正在使用的一个窗口即将关闭”。关闭这个提示信息后,IE浏览器也关闭了。

回答:修复或升级IE浏览器,同时打补丁。我看到有一种修复方法是Win2000自升级,即Win2000升级到Win2000。其实这个方法就是把系统恢复到初始状态。比如你的IE升级到6.0,升级后就换成了IE5.0。

7.问:双击windows xp下光盘中的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。存储器不能被“写入”。要终止程序,单击“确定”,但它在Windows 98中正常运行。

回答:这可能是系统的兼容性问题。对于winXP系统,右击“AutoRun.exe”文件,属性和兼容性,选择“在兼容模式下运行此程序”,选择“Windows 98/Me”。Win2000,如果SP打了补丁,只要启动运行,输入:regsvr 32 c:\ win nt \ app patch \ slayer ui.dll。右键单击,属性和兼容性选项也会出现。

8.问:我的英雄超级解霸自从上网后就一直玩不了。每次提示“0x060692f6”命令引用的“0xff00011”内存无法“读取”时,请按OK终止程序。