簡體   English   中英

指針未被釋放-如何調試?

[英]pointer being freed was not allocated - How to debug?

我收到運行時錯誤

malloc: *** error for object 0x10070c5c0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

具有以下堆棧跟蹤:

在此處輸入圖片說明

這告訴我,不順心的事在析構函數~Clustering~NodeMap (第一個是一個空存根,第二個電話delete[]而不是其中的“指針被釋放”的說法。 我如何找到這個?

另外, malloc_error_break在哪里?

您是否有一個復制構造函數來復制分配的內存? 如果沒有復制構造函數,或者沒有復制構造函數,則不復制分配的內存,則兩個對象的析構函數將嘗試釋放相同的內存位置。

這告訴我,不順心的事在析構函數~Clustering~NodeMap (第一個是一個空存根,第二個電話delete[]而不是其中的“指針被釋放”的說法。

僅僅是~Clustering是“一個空的存根”,並不意味着它沒有任何作用。 在執行了析構函數的主體之后,析構函數將為每個直接非變量非靜態數據成員調用析構函數。 顯然,您的類Clustering包含類型為NodeMap<long,long>的數據成員。

我如何找到這個?

您的類NodeMap<long,long>包含多少個分配的數組? 如果只有一個,那就是一個。 如果不止一個,請在~NodeMap設置一個斷點,以便您逐步執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM