Mac下valgrind的安装和使用

最近在写OpenCV的程序,其中很多是对图片的操作,如果内存发生泄漏会大大降低程序执行效率。valgrind是一款较好的检测程序内存问题的工具。

安装valgrind

首先通过以下脚本安装valgrind,当前最新版本是3.11.0,

curl -O http://valgrind.org/downloads/valgrind-3.11.0.tar.bz2
tar -xjvf valgrind-3.11.0.tar.bz2
cd valgrind-3.11.0
./configure
make
sudo make install

但是在make的过程中出现如下错误,

make[2]: *** No rule to make target `/usr/include/mach/mach_vm.defs', needed by `m_mach/mach_vmUser.c'.  Stop.
make[1]: *** [install-recursive] Error 1
make: *** [install] Error 2

根据参考的博客,发现首先需要安装命令行工具脚本如下,

xcode-select --install

因为我的Mac是64位,所以需要将./configure改成如下脚本,之后再make,最后安装sudo make install,

./configure --disable-tls --enable-only64bit --build=amd64-darwin
make
sudo make install

valgrind使用

假设main.cpp包含如下程序,

#include "stdlib.h"

int main(void)
{
    int *x = (int *)malloc(100 * sizeof(int));
    x[0] = 0;

    return 0;
}

通过如下脚本进行编译,

g++ main.cpp -o main

之后通过如下脚本进行检测,发现如下图有400bytes的内存泄露,

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

leak

如果将main.cpp程序改成如下形式,加上释放内存的代码,发现将没有内存泄露,

#include "stdlib.h"

int main(void)
{
    int *x = (int *)malloc(100 * sizeof(int));
    x[0] = 0;

    free(x);
    x = NULL;

    return 0;
}

no leak

http://www.thinksaas.cn/group/topic/347310/
http://blog.csdn.net/21aspnet/article/details/8172124

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值