将调用哪个malloc?

时间:2014-07-13 18:45:19

标签: memory malloc

我想在我的项目中采用jemalloc。为了在jemalloc中调用malloc()函数,我在.cpp文件中包含了jemalloc / jemalloc.h。但是,我不可避免地应该调用cstdlib.h中提供的一些函数。所以包括jemalloc / jemalloc.h和cstdlib.h。我想知道在这种情况下,会调用哪个malloc()?我如何保证将调用jemalloc中的malloc()?提前谢谢!

2 个答案:

答案 0 :(得分:3)

您需要将您的应用程序与jemalloc库链接(将-L/path/to/jemalloc/lib -ljemalloc添加到链接命令),这将导致动态加载程序将对malloc(),free()等的所有调用解析为jemalloc版本。判断jemalloc是否实际被使用的简单方法是在环境中定义MALLOC_CONF=stats_print:true,这将导致jemalloc在程序退出之前将统计信息转储到stderr。

答案 1 :(得分:2)

您必须tell the linker to use jemalloc,您可以通过在运行程序之前设置环境变量来执行此操作:

LD_PRELOAD=/path/to/lib/libjemalloc.so.1 your_program