经常运行某些软件,出现非法操作,察看情况是某某库冲突等等如何进一步查明原因,解决办法?相关软件谢谢!!

解决方案 »

  1.   

    可以用softice等软件跟踪软件的运行情况,看看是否有非法的内存访问及跳转。但是想解决这个问题,一般用户是不可能的。因为这些都是软件设计上的问题,除非你重新设计这个软件。不过也有些是因为多条内存混插,引起的兼容性问题。还有就是,操作系统的设计缺陷,操作系统的健壮性不高。对应保护的内存区域没有很好的保护。而且windows操作系统为了保持兼容性,对有些内存访问,不加限制,就容易出现非法操作。unix系列操作系统就很少出现这方面的问题。我知道的也不多,就是随便说说罢了,让大家见笑了:)
      

  2.   

    具体问题具体分析
    因为软件\硬件都有可能好久不见 YAOS
      

  3.   

    呵呵,yaos兄果然出手不凡!首先我觉得这和程序本身设计就有关系,如果程序设计的好,把各种exception都能考虑一下也许会运行得更平稳一些;
    其次和OS的内存管理机制有密切关系,例如windows 98的那套“乌合之众”似的内存管理机制就很容易引起程序不稳定,因为它把所有的程序都放在一个区域里执行;而NT/2000/XP都使用了分块分配内存机制,A程序就在A段内存里运行,决不会犯到B程序的B段内存里。所以我们可以看到大部分情况下,在2000里的一个程序崩溃了,只要关闭了它,其他程序还可以照常运行;
    最后我觉得是硬件问题,如果硬件(特别是内存)本身就有问题,那再好的OS和再好的程序算法也是白搭了。
      

  4.   

    :"0x00426617"指令引用的"0x00000038"内存,该内存不能为"read".1。有时候内存不兼容也可能出现这个问题,尤其是插两条内存时2。是软件冲突造成的,系统要对一段内存进行保护,其他用户程序无法访问,当用户程序非法读取这些内存空间时,就会发生这样的错误。从操作系统底层的角度来说应该是:由于有用户模式的程序试图访问以内核模式运行的进程,在进程间通信的共享地址段中试图读取被保护的数据流,因此造成了访问冲突。根据我的经验这个问题最大的可能是由于防病毒软件或一些第三方的系统监视服务禁止了该程序对某些内存地址的访问操作。建议您首先只保留一条内存试试,如果不行就尝试卸载防病毒软件然后检查是否问题依旧,这不是什么大的问题,不需要像大家说的重装系统,不能读就不读嘛,呵呵,当然你要是个追求十全十美的人,可以考虑重装系统,但是我要说的是除非你不再装其它软件,就装个系统,要不然这种错误你应该还是要碰到的,就像win98里的无效页面错误一样。
      

  5.   

    98的内存结构虽然和2000比不稳定,结构也有比较大的差别,但是基本思路是一致的
    为什么同样的程序独占2G内存空间,98 经常出现问题,2000不会,恐怕2000严格的权限审核还有内核的安全管理是关键另外,98的应用程序也是独占0-2G的空间,内核独占2G-4G空间,2000的类似