vs2005编译的程序,时不时发生“应用程序发生异常 位置的软件异常(0xc0000409),位置为0x0004094df”,请问各位大侠这会是什么方面的问题,该怎么调式跟踪?有办法知道0x0004094df这个位置是什么东西吗?或者有什么办法不让系统弹出这个错误窗口?

解决方案 »

  1.   

    这个是内存异常,说明你的程序已经崩溃了。用调试器catch看看异常发生的地方。不过一般都是某处内存被错误写导致的。建议仔细检查一下你的程序,有没有越界操作内存。
      

  2.   

    可是我的程序里能加try...catch的地方都加了。实际上当弹出这个错误窗口的时候程序还正常运行,只是你点确定的时候才会导致程序退出。程序启动以后能否够查看0x0004094df这位置是哪段代码执行的?
      

  3.   


    C++中的try...catch只能捕获throw抛出的异常,并不负责捕获内存异常或除零异常,要捕获这些异常只能用windows的SEH来捕获。
    弹出这个错误窗口的时候程序被挂起了,这个时候可以点取消然后选择调试器进入调试状态。
      

  4.   

    崩溃的时候,通过call stack窗口看看崩在哪里.
      

  5.   

    通常这种情况是由于应用程序没有检查内存分配失败,或者应用程序由于自身BUG等等引用了不正常的内存指针
      

  6.   


    出现这个错误这个程序已经不能再继续运行了。你应该仔细检查内存可能的错误。
    你也可以用SetUnhandledException自己捕获异常,然后直接结束进程,就不会出现这个错误窗口。