使用Windows操作系统的人有时会碰到这样的错误信息:“0X????????指令引用的0x0000 0000内存,该内存不能written”,而后应用程序被关闭。“Windows就是这样不稳固”之类的 说法是错误的。实在,这个错误并不一定是Windows不稳定造成的。本文就来简略剖析这种错误的常见起因 。
一、应用程序没有检查内存分配失败
程序须要一块内存用以保存数据时,就需要调用操作系统供给的“功效函数”来申请,如果内存分配胜利,函 数就会将所新开拓的内存区地址返回给应用程序,应用程序就能够通过这个地址使用这块内存。这就是“动态内存 分配”,内存地址也就是编程中的“指针”。
内存不是永远都招之即来、用之不尽的,有时候内存调配也会失败。当分配失败时体系函数会返回一个0值, 这时返回值“0”已不表现新启用的指针,而是系统向运用程序发出的一个告诉,告诉呈现了过错,
air max 90。作为应用程序,在每一次申请内存后都应该检讨返回值是否为0,
tods shoe,假如是,则象征着涌现了故障,应当采用一些办法抢救,这就加强了程序的“硬朗性”。
若应用程序没有检查这个毛病,它就会依照“思维惯性”以为这个值是给它分配的可用指针,持续在之后的运 行中使用这块内存。真正的0地址内存区保留的是盘算机系统中最主要的“中止描写符表”,相对不容许应用程序 应用。在不掩护机制的操作系统下(如DOS),写数据到这个地址会导致即时逝世机,
mens air jordan shoes,而在健壮的操作系统中,如Windows等,
sale mbt shoes,这个操作会立刻被系统的维护机制捕捉,其成果就是由操作系统强行封闭犯错的应用程序,以避免其错误扩展。 这时候,就会出现上述的“写内存”错误,并指出被援用的内存地址为“0x00000000”。
内存分配失败故障的原因良多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见 于操作系统使用很长时光后,安装了多种应用程序(包含无意中“安装”的病毒程序),更改了大批的系统参数和 系统文件之后。
二、应用程序因为本身BUG引用了不畸形的内存指针
在使用动态分配的应用程序中,有时会有这样的情形出现:程序试图读写一块“应该可用”的内存,但不知为 什么,这个预感中可用的指针已经生效了。有可能是“忘却了”向操作系统请求分配,也可能是程序本人在某个时 候已经注销了这块内存而“没有留心”等等。注销了的内存被系统回收,其拜访权已经不属于该应用程序,因而读 写操作也同样会触发系统的保护机制,打算“守法”的程序独一的下场就是被操作终止运行,回收全体资源。计算 机世界的法律仍是要比人类有效跟严格得多啊!
像这样的情况都属于程序自身的BUG,你往往可在特定的操作次序下重现错误。无效指针不一定老是0,因 此错误提醒中的内存地址也不必定为“0x00000000”,而是其余随机数字。
如果系统常常有所提到的错误提示,下面的倡议可能会有辅助:
1.查看系统中是否有木马或病毒。这类程序为了把持系统往往不负义务地修正系统,从而导致操作系统异样 。平凡应增强信息保险意识,对起源不明的可履行程序毫不好奇。
2.更新操作系统,让操作系统的装置程序从新拷贝准确版本的系统文件、修改系统参数。有时候操作系统自 身也会有BUG,要留神安装官方发行的进级程序。
3.试用新版本的利用程序。