1. 程式人生 > 實用技巧 >VS調試出現:Debug Assertion Failed! Expression:_pFirstBlock==pHead; Expression:_acrt_first_block==header

VS調試出現:Debug Assertion Failed! Expression:_pFirstBlock==pHead; Expression:_acrt_first_block==header

VS調試出現:

Debug Assertion Failed!

Expression:_pFirstBlock==pHead;

點選中止後又彈出:Expression:_acrt_first_block==header

原因:

1)混淆了 Debug和Release情況,有時Debug和Release所需要的庫是不一樣的,如果你只匯入了Release的連結庫,而沒有匯入Debug的連結庫,而編譯執行時又選擇了Debug模式,就可能出現這種問題,這時把Debug的連結庫新增進去就會解決。

2)可能是在一個多執行緒模組了運行了一個單執行緒庫,記憶體在dll一側被分配,在使用一側被釋放,可能導致一個記憶體管理器在分配記憶體,另一個記憶體管理器在釋放同一片記憶體區域,導致錯誤。

C++的STL是單執行緒的,在函式內部使用vector,這個函式在一個多執行緒的環境裡,大概就是這個錯誤產生的原因。

解決方式:就是設定執行庫 為/MDd

工程上右鍵-》屬性-》C/C++=》所有選項:

關於執行庫幾個引數:

多執行緒(/MT)
多執行緒除錯(/MTd)
多執行緒 DLL (/MD)
多執行緒除錯 DLL (/MDd)

名字後帶d的是debug庫,名字含D是動態連結,含T是靜態連結。