Visual c++ 我想使我的mfc应用程序崩溃

Visual c++ 我想使我的mfc应用程序崩溃,visual-c++,mfc,Visual C++,Mfc,当我执行这个 void CcrashDlg::OnBnClickedBtnCrash() { char* ptr = NULL; *ptr = 1; } 应用程序只记录“访问冲突”,什么也没发生 如何使MFC应用程序崩溃?(visual studio 2010)断言(NULL)将在调试模式下使应用程序崩溃。我认为您不想使发布版本崩溃,但如果是这样,您可以使用Verifythere/两者 导致崩溃的其他简单方法是使用sprintf和错误的格式说明符,例如,在字符串预期为“%d”时

当我执行这个

void CcrashDlg::OnBnClickedBtnCrash()
{
    char* ptr = NULL;
    *ptr = 1;
}
应用程序只记录“访问冲突”,什么也没发生

如何使MFC应用程序崩溃?(visual studio 2010)

断言(NULL)将在调试模式下使应用程序崩溃。我认为您不想使发布版本崩溃,但如果是这样,您可以使用
Verify
there/两者


导致崩溃的其他简单方法是使用
sprintf
和错误的格式说明符,例如,在字符串预期为“%d”时输入字符串。

这就是我用来使我的应用程序崩溃的方法。我想它和你的一样。在释放模式下,它也会崩溃

*(int*)0 = 1;
  • abort()在释放模式下工作

  • 在64位操作系统上编译win64平台时,应用程序崩溃


  • 把一个数字除以零

    int div = 1;
    div--;
    int cr = (any number)/div;
    

    我相信答案隐藏在对这个问题的评论中,所以我将在这里总结一下——这是很重要的东西

    完整详细信息位于以下链接:

    您预期会使程序崩溃的无效操作并非在所有情况下都会崩溃。这包括其他答案中概述的许多技巧

    只有当您使用64位版本的Windows,并且位于Windows内核调用的函数中时,才会出现此问题。在32位版本的Windows中,可以从调用内核的代码中捕获异常或无效操作,但在64位版本的Windows中,这是不可能的。Windows本身将在用户/内核边界捕获错误,并忽略它!这被认为是比每次崩溃程序更好的结果,因为在32位中工作得很好的catch块再也没有机会处理错误了


    您仍然可以使用或立即停止进程,但我没有尝试过它们。

    您是否有任何异常处理程序?我不确定,但可能MFC在某些上下文中会愚蠢地吞咽异常(如单击此按钮)。请使用发布版本尝试您的代码。@JonathonReinhart只是使用我的onbnclickedbtncrash()默认生成的代码。@jussij release对调试也会这样做,您可能会感兴趣。