在 Linux 系统下,可以使用 jemalloc 库来检测内存泄漏
安装 jemalloc:
对于 Ubuntu/Debian 系统,可以使用以下命令安装:
sudo apt-get install libjemalloc-dev
对于 CentOS/RHEL 系统,可以使用以下命令安装:
sudo yum install jemalloc-devel
编译并链接程序时,需要指定使用 jemalloc 库。例如,使用 gcc 编译一个名为 example.c
的程序,可以使用以下命令:
gcc -o example example.c -ljemalloc
设置环境变量以启用内存泄漏检测。在运行程序之前,需要设置 MALLOC_CONF
环境变量。例如,要启用内存泄漏检测并将泄漏信息输出到文件,可以使用以下命令:
export MALLOC_CONF="prof:true,prof_leak:true,prof_prefix:jeprof.out"
运行程序。现在,当你运行程序时,jemalloc 会自动检测内存泄漏。泄漏信息将被写入由 prof_prefix
指定的文件中。
分析泄漏报告。泄漏报告将包含泄漏的详细信息,包括泄漏的大小、数量和发生泄漏的代码位置。你可以使用 jeprof
工具来分析报告。例如,要分析名为 example
的程序的泄漏报告,可以使用以下命令:
jeprof --show_bytes --leaks example jeprof.out.*
这将显示泄漏的详细信息,包括泄漏的大小、数量和发生泄漏的代码位置。
通过以上步骤,你可以在 Linux 系统下使用 jemalloc 库来检测内存泄漏。请注意,这些步骤仅适用于使用 jemalloc 作为内存分配器的程序。如果你的程序使用其他内存分配器,你可能需要使用其他工具来检测内存泄漏。