發生內存泄露,如何調試?

 一般來講,程序運行錯誤,我們都會用gdb進行調試,查看程序報錯中斷時的棧幀信息,並根據信息對程序修改完善。

 然而,如果程序是因爲發生內存泄露而終止時,棧幀的信息很可能是“不靠譜”的,這時可以藉助定位程序內存泄露的工具(如valgrind)去發現錯誤點,並加以改正。

原因:

        程序的內存空間分爲堆、棧、全局區(靜態區)、字符串常量區、代碼區,而我的程序又是多線程的程序,極有可能是因爲別的地方發生內存泄露後,程序被強制退出,此時棧幀還沒來得及銷燬,錯誤的原因並不在棧幀處,而如果我們依舊揪着棧幀的調試信息不放、硬着頭皮去調試的話,不但不能找到錯誤,還浪費大把的時間。

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