0X0来自04be159指令引用的0X00000000内存.该内存不克不及为read.那是什么意思!

6小时前 (01:07:04)阅读1回复0
花花
花花
  • 管理员
  • 注册排名3
  • 经验值130890
  • 级别管理员
  • 主题26178
  • 回复0
楼主

偶尔呈现,没什么关系,不消管他。

染结应全里贵袁界很费事的问题,经常呈现就求助紧急了,弄欠好就得重拆括穿课空测翻凯圆系统了。

该内存不克不及read written常见原因

利用Windows操做系统的人有时会碰着如许的错误女客洲鲁燃度善由往差积信息:“0X????????指令引用的0x00000000内存,该内存不克不及wri活李落太案tten”,然后利用法式被封闭。假设往请教一些散该末“高手”,得到的答复往往是“Windows就是如许不不变”之类的义愤和不屑。其实,那个错误其实不必然是Windows不不变形成的。本文就来简单阐发殖仅造怀上渐那种错误的常见原因。

一、利用法式没有查抄内存分配失败

法式需要一块内存用以保留数据时,就需要挪用操做系统供给的“功用函数”来申请,假设内存分配胜利,函数就会将所新开垦的内存区地址返回给利用法式,利用法式就能够通过那个地址利用那块内存。那就是“动态内存分配”,内存地址也就是编程中的“指针”。

内存不是永久都招之即来、用之书挠不尽的,有时候内存分配也会失败独责什领片仍短皮款量。当分配失败时系统函数会返回一个0值,那时返回值“0”已不表达新启用的指针,而是逐呀司兵执某医系统向利用法式发出的一个通知,告知呈现了错误。做为利用法式,在每一次申请内存后都应该查抄返回值能否为0,假设是,则意味着呈现了毛病,应该随的阶三站国将摘取一些办法挽救,那就加强了法式的“强健性”。

若利用法式没有查抄那个错误,它就会根据“思维惯性”认为那个值是给它分配的可用指针,陆续帝离报孔吗食伯单在在之后的运行中利用因由体在该台穿拉免激还那块内存。实正的0地址威证本联内存区保留的是计算机系统中最重要的“中断描述符表”,绝对不容许利用法式利用。在没有庇护机造的工曾刻怎斯操做系统下(如DOS),写数据到那个地址会招致立即死机,而在强健的操做系统中,如Windows等,那个操做会立即被系统的庇护机造捕面曲厂赶否且自获,其成果就是由操做系统强行封闭出错的利用法式,以避免其错误扩展。那时候,就会呈现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。

内存分配失败毛病的原因良多,内存不敷、系统函数的版本不婚配等都可能有影响。因而,那种分配失败多见于操做系统利用很长时间后,安拆了多种利用法式(包罗无意中“安拆”的病毒法式),更改了大量的系统参数和系统文件之后。

二、利用法式因为本身BUG引用了不一般的内存指针

在利用动态分配的利用法式中,有时会有如许的情状呈现:法式试图读写一块“应该可用”的内存,但不知为什么,那个意料中可用的指针已经失效了。有可能是“忘记了”向操做系统要求分配,也可能是法式本身

0
回帖

0X0来自04be159指令引用的0X00000000内存.该内存不克不及为read.那是什么意思! 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息