一个有多线程、DB、文件操作、SOCKET、界面更新的不间断数据接收显示程序。运行了几个小时后自己退出,没任何提示,很烦。不好定位错误。操作环境win2000, 256M内存。
在XP下不退出,在一台4G内存的计算机上也没有退出,但最大内存只占到86M。各位如果遇到过能说说是什么原因么?

解决方案 »

  1.   

    用debug版调试了,肯定是代码有问题了
      

  2.   

    debug跑了N天也没问题。遇到过此情况的大侠能说说最终从什么地方解决的么?
      

  3.   

    下载一个 NuMega.BoundsChecker.VisualC++ ,看看有没有内存泄漏
      

  4.   

    搞证券的?不过这种问题,我想通过写文件的方式来解决,你猜测可能出问题的地方,然后在这种地方写满日志,如果relase非法操作了,你根据日志文件来推导出错的代码.
      

  5.   

    下载一个 NuMega.BoundsChecker.VisualC++ ,看看有没有内存泄漏说句实在话,这东东报的错误太多了,特别是线程存取,很难定位
      

  6.   

    这种问题引起的真正原因很可能是你的一个小小疏忽所造成的。但要查找这
    类bug的所在,我想难度很大!我分析如下,供参考:程序运行多天后,莫名退出,而且Debug挺后,release出
    现问题。引起的此类现象的原因有很多方面。例如:
    1  调用了ExitProcess()或eixt()等函数,致使函数退出。
    2  内存出现缓慢泄露,最终导致分配内存失败或系统页面调度失败,而导致退出
    3  另外,最大一种可能,就是你的“栈“被破坏了。同时“栈“也是异常处理
       机制所必须的。一旦“栈“破坏了,甚至连“Win32程序最后的系统异常提示“也
       不会出现,程序就退出了。
        那什么样情况下会可能出现“栈“被破坏呢?函数的调用过程中,是需要保存
      一些返回地址的。如果在你的局部函数中不小心地改写了这个地址,就会出现这种
      情况,仔细检查吧!一定要耐心。如需我帮助,请联系我。QQ:88913919
      

  7.   

    分析DEBUG与RELEASE两种编译方式中所出现的不同,可能有些函数要求不同,如果有WARNING,请注意并尽可能排除.