内存泄露检测,使用工具
valgrind
,能够检测具体哪一行代码创建的内存泄露。
因该该工具只在程序结束时才统计信息,所以对于我们不退出的程序可以在运行一段时间后,直接ctrl+c停止,valgrind会统计目前的信息。
使用以下选项:
valgrind --leak-check=yes --trace-children=yes --show-reachable=yes --log-file=logname program args
说明:
valgrind是一个调试程序的工具集,可以检测Memcheck, Addrcheck, Cachegrind等。
--leak-check=yes 泄露检测信息输出方式有<no|summary|yes|full> [default: summary],选择summary,只有统计概要输出
--trace-children=yes 跟踪子进程,对于多线程可加可不加
--show-reachable=yes 如果这个禁用,那只检测那些已经丢失指针指向的那些内存块,有<yes|no> [default: no]
--log-file=log 输出检测的日志文件,不加会直接显示在shell中,valgrind会在log名后加.pid
其他看man手册
手册地址http://valgrind.org/docs/manual/manual.html
因该该工具只在程序结束时才统计信息,所以对于我们不退出的程序可以在运行一段时间后,直接ctrl+c停止,valgrind会统计目前的信息。
使用以下选项:
valgrind --leak-check=yes --trace-children=yes --show-reachable=yes --log-file=logname program args
说明:
valgrind是一个调试程序的工具集,可以检测Memcheck, Addrcheck, Cachegrind等。
--leak-check=yes 泄露检测信息输出方式有<no|summary|yes|full> [default: summary],选择summary,只有统计概要输出
--trace-children=yes 跟踪子进程,对于多线程可加可不加
--show-reachable=yes 如果这个禁用,那只检测那些已经丢失指针指向的那些内存块,有<yes|no> [default: no]
--log-file=log 输出检测的日志文件,不加会直接显示在shell中,valgrind会在log名后加.pid
其他看man手册
手册地址http://valgrind.org/docs/manual/manual.html