建立標準 MFC 單文檔專案,**完全不修改任何代碼**,Debug 執行即彈出:
HEAP CORRUPTION (0xC0000374) - ntdll.dllACCESS VIOLATION (0xC0000005) 讀取位置 0x00000003重裝 VS、嘗試 VS2015 均無效,極大概率為**環境干擾**而非專案代碼問題。
國產安全軟體習慣透過 **AppInit_DLLs**、**全域鉤子 (SetWindowsHookEx)**、**DLL 注入** 等方式將監控模組強制載入所有進程。MFC 初始化過程中大量堆操作、視窗類註冊、COM 初始化,極易與注入代碼衝突導致堆元資料損壞。
msconfig → 服務頁面 → 勾選「隱藏所有 Microsoft 服務」 → 「全部停用」 → 啟動頁面 → 「開啟工作管理員」 → 禁用所有啟動項 → 重開機 → 測試 MFC 專案。regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows → AppInit_DLLs 應為空值。若有路徑,備份後清空重開機。Depends.exe (Dependency Walker) 開啟編譯出的 .exe,Profile 執行,查看是否載入非系統標準 DLL (如 360Safe.dll, QHAcc.dll, KSafe.dll...)。| 原因 | 特徵 | 對策 |
|---|---|---|
| Visual C++ Redistributable 損壞/版本衝突 | 多版本並存導致 CRT 載入錯誤 | 控制台卸載所有 VC++ Redist,重新安裝最新 x86/x64 版 |
| 專案屬性配置錯誤 | 字元集 (Unicode/MBCS) 與 MFC 使用方式 (靜態/動態連結) 不匹配 | 屬性 → 一般 → 字元集: Unicode; MFC 使用標準 Windows 程式庫 |
| Windows 更新導致系統 DLL 變更 | 特定 KB 更新引入回歸 | 查看事件檢視器 Application 錯誤詳情,搜尋 KB 編號回滾更新 |
| 硬體/驅動問題 | 顯卡驅動、記憶體錯誤 | 更新驅動、執行 mdsched.exe 記憶體診斷 |
requireAdministrator (需管理員權限運行),有時能繞過部分用戶態鉤子。原最佳回答「是不是裝了360了?」一語中的。**90% 以上此類「空專案崩潰」皆為安全軟體注入導致**,環境淨化是根治之道。