看板 EE_DSnP 關於我們 聯絡資訊
寫作業四的時候有用到valgrind,提出來和大家分享一下: valgrind是一個程式,可用來檢查記憶體是否有錯誤的使用情況,例如指標指到不該指的 地方或memory leak,在某些方面比gdb還要好用。 使用前要先安裝,打apt-get install valgrind或yum install valgrind就可以了。 要執行時,valgrind後面接檔名跟參數,例如: valgrind ./memTest -f tests/do1 如果有不合法的存取,會顯示invalid read或invalid write以及類似gdb的backtrace, 就可以知道程式在哪些地方用到有問題的指標。 如果要檢查是否有memory leak,需要加一個參數--leak-check=full,例如: valgrind --leak-check=full ./memTest -f tests/do1 程式結束後會告訴你哪些指標沒有被delete/free,以及那個指標new/malloc的地方。基 本上看definitely lost就好,indirectly lost和possibly lost可以不用理他。 要注意的是,compile的時候g++要加上-g這個參數,否則backtrace可能沒辦法顯示行號 。 拋磚引玉,希望對大家有幫助! -- 白日登山望烽火,黃昏飲馬傍交河。行人刁斗風沙暗,公主琵琶幽怨多。 野雲萬里無城郭,雨雪紛紛連大漠。胡雁哀鳴夜夜飛,胡兒眼淚雙雙落。 聞道玉門猶被遮,應將性命逐輕車。年年戰骨埋荒外,空見蒲桃入漢家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.248.144
michael0728n:推推 好用 11/12 17:25
candy0515:推~~ 11/12 21:22
ric2k1:推! 11/13 01:59
ColaNut:推~! 11/13 13:04
huei820504:太晚看到Q_Q 好用推 11/22 00:32