C/C++内存检测工具valgrind
生活随笔
收集整理的這篇文章主要介紹了
C/C++内存检测工具valgrind
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
valgrind是什么
用來檢測C/C++程序中出現的內存問題
所有對內存的讀寫將會被檢測
malloc() free() new() delete()
這些函數的調用都會被捕獲
相關檢測的內容
1.讀寫未初始化或已經釋放的內存
2.讀寫范圍超出動態分配的上限
3.數組越界
4.內存泄漏
5.非法的讀寫
6.malloc/free 或 new/delete 不匹配
7.拷貝內存時發生數據覆蓋
使用方法
在編譯程序的時候 打開調試模式(-g)顯示行號
編譯時關閉O1/O2等優化選項
檢查C++程序時 可以加上選項 -fno-inline
gcc -g XXX.c -o XXX
valgrind --tool=memcheck --leak-check=full --log-file=./log.txt XXX
(XXX是可執行文件的名字)
執行 valgrind 命令后 會把相關日志寫入 log.txt 文件內
演示
錯誤代碼
#include<stdlib.h>int main(void) {int* a = malloc(520*sizeof(int));a[520] = 1314;//數組下標越界 且 內存沒有被釋放return 0; }編譯 執行valgrind過程?
日志結果
分析原因
1.Invalid write of size 4
????????4字節大小內存的非法寫入 對應a[520]=1314 數組越界
2.LEAK SUMMAYR 2080 bytes
????????內存泄漏2080字節 對應分配了520個int大小(520*4)的內存空間卻沒有釋放
總結
以上是生活随笔為你收集整理的C/C++内存检测工具valgrind的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux内存测试工具memtest,内
- 下一篇: Android内存检测工具