电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

操作系统出现内存错误不用慌


发布日期:2024/4/23
 

使用Windows操作系统的人有时会遇到这样的错误信息X指令引用的x内存该内存不能written然后应用程序被关闭如果去请教一些高手得到的回答往往是Windows就是这样不稳定之类的义愤和不屑其实这个错误并不一定是Windows不稳定造成的本文就来简单分析这种错误的常见原因

应用程序没有检查内存分配失败

程序需要一块内存用以保存数据时就需要调用**作系统提供的功能函数来申请如果内存分配成功函数就会将所新开辟的内存区地址返回给应用程序应用程序就可以通过这个地址使用这块内存这就是动态内存分配内存地址也就是编程中的指针

内存不是永远都招之即来用之不尽的有时候内存分配也会失败当分配失败时系统函数会返回一个这时返回值已不表示新启用的指针而是系统向应用程序发出的一个通知告知出现了错误作为应用程序在每一次申请内存后都应该检查返回值是否为如果是则意味着出现了故障应该采取一些措施挽救这就增强了程序的健壮性

若应用程序没有检查这个错误它就会按照思维惯性认为这个值是给它分配的可用指针继续在之后的运行中使用这块内存真正的地址内存区保存的是计算机系统中最重要的中断描述符表绝对不允许应用程序使用在没有保护机制的**作系统下(如DOS)写数据到这个地址会导致立即死机而在健壮的**作系统中如Windows等这个**作会马上被系统的保护机制捕获其结果就是由**作系统强行关闭出错的应用程序以防止其错误扩大这时候就会出现上述的写内存错误并指出被引用的内存地址为x

内存分配失败故障的原因很多内存不够系统函数的版本不匹配等都可能有影响因此这种分配失败多见于**作系统使用很长时间后安装了多种应用程序(包括无意中安装的病毒程序)更改了大量的系统参数和系统文件之后

应用程序由于自身BUG引用了不正常的内存指针

在使用动态分配的应用程序中有时会有这样的情况出现程序试图读写一块应该可用的内存但不知为什么这个预料中可用的指针已经失效了有可能是忘记了向**作系统要求分配也可能是程序自己在某个时候已经注销了这块内存而没有留意等等注销了的内存被系统回收其访问权已经不属于该应用程序因此读写**作也同样会触发系统的保护机制企图违法的程序唯一的下场就是被**作终止运行回收全部资源计算机世界的法律还是要比人类有效和严厉得多啊!

像这样的情况都属于程序自身的BUG你往往可在特定的**作顺序下重现错误无效指针不一定总是因此错误提示中的内存地址也不一定为x而是其他随机数字

如果系统经常有所提到的错误提示下面的建议可能会有帮助

查看系统中是否有木马或病毒这类程序为了控制系统往往不负责任地修改系统从而导致**作系统异常平常应加强信息安全意识对来源不明的可执行程序绝不好奇

更新**作系统让**作系统的安装程序重新拷贝正确版本的系统文件修正系统参数有时候**作系统本身也会有BUG要注意安装官方发行的升级程序

试用新版本的应用程序

上一篇:Win2000故障解决一览

下一篇:Windows XP操作系统启动故障排除(图)