Linux内存泄漏检测工具Valgrind,轻松揪出C++内存泄露

检测维修 0 60

linux 内存泄漏检查工具 valgrind

具体来说, 于c++范畴之内, 全部经由new以及malloc分配所得的堆内存, 皆需借助与之配对的delete和free实施释放操作。一旦处于类当中, 并进行了动态内存分配, 那么理应把相应的释放函数写入至类的析构函数里。倘若未使用智能指针, 那么我们时常会出现遗漏内存释放的情况。在linux的调试工具领域, valgrind工具能够用以检察程序内内存的泄露相关状况。

下载安装指令如下:

sudo apt-get install valgrind

使用格式如下:

valgrind --tool=memcheck(等一些开关指令) 可执行文件名

开关指令如下:

--tool=memecheck #使用valgrind工具集中的memcheck工具
--leak-check=full #完全full检查内存泄漏(可以显示哪个文件的哪一行分配的内存出现了泄露)
--show-reachable=yes #显示内存泄漏地点

如对一个无内存泄漏的程序名为nginx的程序调用如下代码:

valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./nginx

会得到如下结果:

linux 内存泄漏检测工具_valgrind linux 内存泄漏检查工具_c++ 内存泄漏调试工具 valgrind

经图中标明之处呈现, 总共进行了9处内存的分配工作, 而这9处内存, 每一处都已被实施释放操作。

如果调试一个有内存泄漏的程序,结果如下:

能够瞧见, 所分配的九处内存之中, 仅仅有七处被释放掉了, 并且,那未曾被释放的内存摆放于ngx_c_conf,cpp的第五十七行处。

用valgrind工具, 能够速即调试出, 程序内存泄漏的数量, 以及内存泄漏的地点。

相关推荐: