|
发表于 2012-7-13 13:51:11
|
显示全部楼层
来自: 中国浙江台州
造成内存不能为read的深层次原因' `7 y7 |: k. L1 I% D$ L; t% R
有些应用程序在启动特别是退出保存数据时,需要调用操作系统提供的“功能函数”进行申请。如果内存分配成功,函数就会将新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用相应内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。 ! G$ o) G' | ], v- Z
但由于某些原因,可能导致内存分配的失败。当分配失败时系统函数就会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序提醒:你的申请出现错误未能成功!若应用程序没有检查到这个错误,就会按照“思维惯性”认为这个值就是给它分配的可用指针,继续在此后的运行中使用它认为的“这块内存”。
" t6 G9 R6 k# g t+ y然而,真正的0地址内存区保存的是系统中最重要的“中断描述符表”,是不允许一般应用程序使用的。应用程序试图使用该0地址,会马上被Windows系统的保护机制捕获,而后由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为 “0x????????”。
* z0 C' `" K: y: k6 ^6 H如何避免内存不能为read?) C9 X8 K2 ?2 ?7 J
1,安装原汁原味的官方原版系统- ^; r) x& e* f' J2 M
2,不滥装软件,只安装自己需要的软件
2 U( ?& m A9 j9 u, Z" A R- M推荐阅读:关于软件的选择,安装,设置,卸载的注意事项 d |, x! R- o2 |3 Q* x
3,使用一段时间,建议定期清理内存的“金手指”结合部
( s% ^ c- G1 L' r! }$ E' j& M1 n4,安装知名的杀毒软件,定期查杀,减少感染病毒木马的几率
2 u3 R! R3 @; s遇到内存不能为read的紧急补救措施:
$ w& \( @/ \& m' K7 g4 Y8 `在命令提示符(CMD)中输入以下命令后回车:- z7 Z5 k) y, U* h( Q# a: p
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 M4 R$ d% I& T& f( e) p; X+ N
通过运行以上命令可以将系统中所有的.dll文件重新注册一遍(大约需要3-5分钟时间),从而解决当前的内存不能为read的故障。 |
评分
-
查看全部评分
|