Windows内存出错的几个办理筹划[Windows安全]
本文“Windows内存出错的几个办理筹划[Windows安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后利用程序被关闭.
假如去请教一些「高手」,得到的答复常常是「Windows就是这样不安定」之类的义愤和不屑.其实,这个错误并不一定是Windows不安定造成的.本文就来简单解析这种错误的普通缘由.
1、利用程序没有查抄内存分配失利
程序需求一块内存用以储存数据时,就需求利用操作系统供应的「功效函数」来申请,假如内存分配成功,函数就会将所新开辟的内存区地址返回给利用程序,利用程序便可以通过这个地址利用这块内存.这就是「动态内存分配」,内存地址也就是编程中的「光标」.内存不是永久都招之即来、用之不尽的,有时刻内存分配也会失利.当分配失利时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向利用程序发出的一个告诉,奉告呈现了错误.作为利用程序,在每一次申请内存后都应当查抄返回值能否为0,假如是,则意味着呈现了弊端,应当采纳一些办法解救,这就加强了程序的「结实性」.若利用程序没有查抄这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,持续在之后的履行中利用这块内存.
真正的0地址内存区储存的是计算机系统中最重要的「中止描写符表」,绝对不答应利用程序利用.在没有保护机制的操作系统下(如DOS),写数据到这个地址会招致当即当机,而在结实的操作系统中,如Windows等,这个操作会即刻被系统的保护机制捕捉,后来果就是由操作系统强行关闭出错的利用程序,以避免其错误扩大.这时刻,就会呈现上述的「写内存」错误,并指出被引用的内存地址为「0x00000000」.内存分配失利弊端的缘由很多,内存不够、系统函数的版本不匹配等都大概有影响.因此,这种分配失利多见于操作系统利用很长时间后,安装了多种利用程序(包含无意中「安装」的病毒程序),更改了大量的系统参数和系统档案之后.
2、利用程序由于自身BUG引用了不正常的内存光标
在利用动态分配的利用程序中,有时会有这样的情形呈现:程序试图读写一块「应当可用」的内存,但不知为什么,这个预猜中可用的光标已经失效了.有大概是「忘掉了」向操作系统要求分配,也大概是程序自己在某个时刻已经注销了这块内存而「没有留神」等等.注销了的内存被系统回收,其拜候权已经不属于该利用程序,因此读写操作也一样会触发系统的保护机制,计划「违法」的程序唯一的下场就是被操作终止履行,回收全部资源.计算机世界的法律还是要比人类有效和严峻得多啊!像这样的情形都属于程序自身的BUG,你常常可在特定的操作次序下重现错误.无效光标不一定老是0,因此错误提醒中的内存地址也不一定为「0x00000000」,而是别的随机数字.假如系统常常有所提到的错误提醒,下面的倡议大概会有阐明 :
1.检视系统中能否有木马或病毒.这类程序为了掌握系统常常不负责任地改正系统,从而招致操作系统非常.普通应加强信息安全意识,对根源不明的可执路程序毫不好奇.
2.更新操作系统,让操作系统的安装程序重新拷贝精确版本的系统档案、改正系统参数.
有时刻操作系统本身也会有BUG,要注意安装官方发行的进级程序.
3.试用新版本的利用程序.
Mode:
将虚拟内存撤换
答案:
目前为止是必定的,也就是如在下次寒天到来时亦没再发生,就代表这是主因
追加:
假如你用 Ghost 恢复 OS 后倡议 删除WINDOWS\PREFETCH目录下全部*.PF文件因为需让windows重新汇集程序的物理地址.
有些利用程序错误 "0x7cd64998" 指令参考的 "0x14c96730" 内存.该内存不能为 "read"推论是此缘由.
源由:
Win XP的「预读取」技术
这种最佳化技术也被用到了利用软件上,系统对每一个利用软件的前几次启动情形举行解析,然后新增一个描写套用需求的虚拟「内存映像」,并把这些信息储存到WINDOWSPREFETCH数据夹.一旦成立了映像,利用软件的装入速度大大提高.XP的预读取数据储存了近来8次系统启动或利用软件启动的信息.
后叙:
目前此办法亦是独步网络的(其码自己针对此问题查了好久),也是常见问题,本来几近每天睡前关闭软件时一些程序城市发生...read...
目前就没发生了.
运行某些程序的时刻,有时会呈现内存错误的提醒(0x背面内容有大概不一样),然后该程序就关闭.
“0x????????”指令引用的“0x????????”内存.该内存不能为“read”.
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”.
不知你呈现过近似这样的弊端吗?
普通呈现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了.
下面先说说硬件:
普通来说,内存呈现问题的大概性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个差别牌子差别容量的内存混插,也对比简单呈现不兼容的情形,同时还要注意散热问题,分外是超频后.你可以利用MemTest 这个软件来检测一下内存,它可以完好的检测出内存的安定度.
假定你是双内存,并且是差别品牌的内存条混插大概买了二手内存时,呈现这个问题,这时,你就要查抄是不是内存出问题了大概和别的硬件不兼容.
假如都没有,那就从软件方面解除弊端了.
先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有充足空间,就会发生溢呈现象.举个例子:一个桶子只能将一斤的水,当你放入两斤的水进入时,就会溢出来.而系统则是在屏幕上表现出来.这个问题,常常呈目前windows2000和XP系统上,Windows 2000/XP对硬件的要求是很尖刻的,一旦碰到资源死锁、溢出大概近似Windows 98里的不法操作,系统为保持安定,就会呈现上述情形.别的也大概是硬件设备之间的兼容性不好造成的.
以上是“Windows内存出错的几个办理筹划[Windows安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |