应有程序发生异常unkown softwore exception(0x0000fd),位置为0x004e20b8

来源:百度知道 编辑:UC知道 时间:2024/06/20 04:14:35
看电影和玩魔兽时经常弹出,并关闭了程序,想不关也不行,这是怎么回事,希望能得到高手的指点,谢谢

其实这个问题很早之前就有人发现原因,那就是XP本身的一个小BUG(呵呵,本人最喜欢的一个词),那就是“物理内存+虚拟内存”不可超过1.5G,超过的话系统认不出,反而认为是内存不足[em06]。这点微软也已经承认。</p><p>我最近加了条512,加上原来的256,再加上原来就分配了的1150Mb的虚拟内存,运行游戏就说无足够可用的系统内存,汗死!!!(升级到3.9.68就没这个问题,这里说的是3.9.65)</p><p>但是令我吃惊的是当我试着开了个魔兽,又开了个CS最下化在任务栏,再去运行CM的时候,呵呵,又好了,更晕!!!</p><p>于是我在想这个问题可能应该这样来解释:</p><p>以物理内存为X,虚拟内存为Y,n表示当前在不运行CM时系统占用的物理内存及虚拟内存的总和,Z表示溢出后的系统读取的物理内存加虚拟内存实际总和,min为CM要求的最小内存,f表示CM本身占用的内存数。</p><p>那么,显然 Z=X+Y-n-f-1.5G(这里假设以1.5G为一标准)</p><p>Z<min 这就是为什么提示内存不足的原因了。补充一下此时应该是0<Z<min。</p><p>至于当我开了魔兽、CS后情况发生改变,是因为这个时候魔兽、CS占用资源使得Z缩小,出现负值,也就是说X+Y-n-f<1.5G,那么这个时候BUG作用消失,系统正常读取内存信息,也就可以运行CM了。</p><p>总结:只要是当前实际读取内存数>=min值,CM就可以运行,而不是非得X+Y在1.5G以内。</p><p>发散:如果我不减反增,使得溢出值超过min值不是也就没鸟事了?!</p><p>解决办法:</p><p>1。减小虚拟内存。(缺点:牺牲性能。比如我的虚拟内存推荐值为1150Mb,我不得不减少到大概888Mb)</p><p>2。增大虚拟内存。(一般会设很多虚拟内存,硬盘空间大无所谓。以我的情况为例,最小值设到3888Mb,OK!)</p><p>3。找