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