C++Debug Assertion Failed!到底出錯在哪裡?

來源:酷知科普網 2.82W

在執行程式時,時常遇到一些Debug Assertion Failed!的錯誤警告對話方塊,對於初學者不知道問題出在哪裡,我在這裡以一個簡單的例子演示給大家。

C++Debug Assertion Failed!到底出錯在哪裡?

操作方法

(01)下面這幅圖是我的程式原始碼截圖,這是一個很簡單的小程式,不妨自己閱讀下能否找到錯誤。

C++Debug Assertion Failed!到底出錯在哪裡? 第2張

(02)下圖是在執行程式時彈出的錯誤警告對話方塊,類似的情況很多,我在除錯dll外掛的時候也時常碰到,後來發現大多是指標引起的錯誤。

C++Debug Assertion Failed!到底出錯在哪裡? 第3張

(03)下圖熒光筆標記的地方,是Distance類析構函式,這裡使用了delete,其實是畫蛇添足的,因為pDist指標是靜態分配的記憶體,當程式執行完後,其記憶體自動釋放,此時使用delete就是刪除一個不存在的指標,從而報錯,而實際上delete是與new搭配使用的。

C++Debug Assertion Failed!到底出錯在哪裡? 第4張

(04)總結來說這種錯誤存在兩種情況,其一就是野指標。

C++Debug Assertion Failed!到底出錯在哪裡? 第5張

(05)另一種情況就是記憶體洩露。

C++Debug Assertion Failed!到底出錯在哪裡? 第6張

(06)在除錯的時候一定是在自己編寫的函式上找錯,不要一隻跟著除錯順序在庫函式裡找錯。

特別提示

單步除錯找到錯誤,祝好運。

熱門標籤