[英]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.