[英]C++ - Debug Assertion Failed on program exit
如果刪除已刪除的對象,通常會出現這種錯誤。
如果將一個對象提供給應該擁有第一個對象所有權的多個其他對象,並且兩者都嘗試在其析構函數中刪除它,則會發生這種情況。
正如消息框已經暗示的那樣,您可能以某種方式破壞了堆。 您釋放/刪除了您不應該使用的某個內存塊,或者您嘗試寫入已經釋放/刪除的某個內存塊。
調用堆棧表明,這可能在單步執行main
函數的最后一行時發生。 如果真是這樣,那么問題可能出在某些用戶定義類型的清除例程中,您可以在main
函數中創建其實例。 嘗試在自己的類的析構函數中設置斷點並進行調查。
您可能在程序操作期間破壞了堆,但是直到程序結束才檢測到堆,在這種情況下,堆棧跟蹤只會指向內存檢查例程
您可能在操作期間可以調用一個函數來檢查堆是否有效,這可能使失敗更接近破壞點
HeapValidate是此類例程的一個示例,但這取決於您使用的平台
當您使用delete[]
而不是delete
時,也會發生此錯誤。 但是,如上所述,這只是許多原因之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.