“glibc detected”, free(), invalid pointer解決方法

在運行的時候出現了這個錯誤:

*** glibc detected *** /home/zyj/zk_lock/.libs/lt-zklocktest: free(): invalid pointer: 0x00000000004106d0 ***

開始啥都不明白,只是覺得哪裏的free估計除了問題,在網上查了一系列資料後,開始着手來解決。

首先需要定位程序裏的哪個free函數出的問題,由於程序裏面用到free的地方不多,而且在執行過程中都有打印信息,所以很容易確定大概會在哪個free出錯,最簡單的辦法就是在free的前面加上一個printf語句,這樣就明確了。

網上有關於這個錯誤比較系統的解釋:http://www.cnblogs.com/colorfulkoala/archive/2012/09/12/2682601.html

根據自己的情況就應該是invalid pointer,我把這個指針的內容打印出來,發現很正常,然後就從頭跟蹤這個指針。

原來開始並沒有給這個指針分配空間,是將一個指針賦給它的,因此最後我們也不需要給這個指針進行釋放,在註釋掉這個free語句後就OK了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章