调试窗口输出
First-chance exception in xxx.exe (NTDLL.DLL): 0xC0000005: Access Violation.

Free Heap block modified at after it was freed程序代码不少,但我实在找不到是代码哪里的内存访问违规,奇怪的是,只是在vc6编译的debug版会检测到!(不知道是不是真的检测到),还常常new失败,release版则总是没事,
用vc2008编译的debug和release版也都没崩溃过,我确实遇到过,堆访问越界或释放后修改可能程序没挂,但随后导致new失败的情况,但调试起来实在没辙了,救命啊

解决方案 »

  1.   

    装了BoundChecker,从来没用过,用BoundChecker的变异后, 调试go跑步起来,
    Loaded 'ntdll.dll', no matching symbolic information found.
    Loaded 'C:\Windows\System32\verifier.dll', no matching symbolic information found.
    First-chance exception in main.exe: 0xC0000005: Access Violation.
    连 main()都进不到,太郁闷, 为什么这么多挫折~~~~~~~~~~~~
      

  2.   

    我是在vista下, BoundChecker是6.5, 调试go开始就有异常,然后就应用程序初始化错误,退出~~~~~~~~~~~~~~~~~~555555555555555555555555555
      

  3.   

    BoundChecker 7.2 则怎么安装都失败,总是没有和vc6加载一起
    仇视世界……
      

  4.   

    使用despends查看连接的库是否都是同一个c运行时库。
      

  5.   

    释放的时候用下面这句,应该可以解决.
    delete p ;
    p = null;应该是没有释放内存,或者释放后,指针没有置空.
      

  6.   

        new   不存在失败  除非系统没内存了错误提示只可作为参考 不要过于相信     
    把功能很开调试 很快就可以找到有问题的地方
      

  7.   

    First-chance exception in xxxx.exe (NTDLL.DLL): 0xC0000005: Access Violation.
    我的程序出现这些后, 是会断下来,没法继续go的
    问题还是没调试出来,只有vc6的debug版本常常触发,其他编译的版本就不触发,触发的代码位置很随机,但都是些释放资源或申请资源的时候
      

  8.   

    问题终于用有眉目, 当我把vc6的debug版的运行时改为多线程的就不再崩溃了,之前的是设置为Single-threaded,而我发现vc2008里根本都没有Single-threaded选项了,默认都是多线程版的运行时库,vc6在多线程用Single-threaded选项(我从来都不用_beginthread创建线程),导致特别多的郁闷现象,有时莫名死锁,常常new失败等等……………………………………
    哎,血的教训