我在MFC/c + +中做了一個簡單的應用程序。這段代碼是在CWinApp類中創建一個對話框。它編譯得很好,運行也很好,但是隻有當我從VStudio運行它時,如果我運行它直接導致運行時錯誤,程序崩潰。奇怪的問題MFC C++
CMyDialog dlg;
m_pMainWnd = (CWnd*)&dlg;
dlg.DoModal();
但如果我使用下面的代碼,那麼一切都很好。我不明白這種行爲。
CMyDialog *dlg=new CMyDialog();
m_pMainWnd = (CWnd*)dlg;
dlg->DoModal();
這種類型的事情以前也發生過很多次,對於我以前的其他一些C++(非MFC)項目。 請給我指定。
當問題發生時,您可以從第一個案例發佈調用堆棧嗎? – 2011-01-07 14:37:40
我其實已經理解了這個問題,但是這裏是調用堆棧(僅在發佈模式下出錯)。 > \t NTDLL.DLL!7c911e58()\t \t [下面的幀可能是不正確的和/或缺失,沒有加載ntdll.dll的符號] \t \t NTDLL.DLL!7c918251()\t \t NTDLL.DLL!7c911c76 ()\t \t ntdll.dll中!7c911538()\t \t ntdll.dll中!7c9106eb()\t \t ntdll.dll中!7c9140bb()\t KERNEL32.DLL \t!7c801a4f()\t \t ntdll.dll中!7c90e234()\t KERNEL32.DLL \t!7c8110db()\t KERNEL32.DLL \t!7c801a24()\t \t ...等也只是註釋大小StackOverflow的溢出 \t ... – YAHOOOOO 2011-01-07 14:44:21
在這種情況下,我通常在崩潰後立即選擇「調試」。假設Visual Studio以DEBUG版本打開,即使您雙擊可執行文件,仍然可以在崩潰後調試程序並找到問題的底部。 – 2017-04-04 08:57:14