Hoard分配器没有“工作”?

时间:2010-05-03 11:39:31

标签: c++ memory-management hoard

我正在尝试使用Hoard分配器来工作,但似乎没有。我有一个基准测试应用程序,可以进行大量的动态内存管理。 Hoard和glibc内存管理器的执行时间是一样的。这让我想知道我是不是做对了。

我做的是......

export LD_PRELOAD="/path/libhoard.so"

g++ main.cpp -O3 -o bm -lpthread -lrt

我不应该链接到Hoard分配器吗?是什么路径(在LD_PRELOAD中),或者我可以有任何路径吗?

我正在运行Ubuntu 8.04和g ++ 4.2.4

干杯


没有人知道任何Linux命令(例如grep)来确定Hoard是否正确加载,并且是否使用了实际的分配器?

1 个答案:

答案 0 :(得分:6)

此处Hoard的作者。

(a)LD_PRELOAD的任何路径都可以(只要它是正确的)。

(b)要查看您的代码是否使用Hoard,请使用ldd命令。如果一切按计划进行,那么你将看到Hoard库(注意第二次调用ldd后的第二行)。

最佳,

- Emery Berger

bash-3.2$ ldd /bin/ls
    linux-vdso.so.1 =>  (0x00007fffe6dfd000)
 librt.so.1 => /lib64/librt.so.1 (0x0000003159600000)
 libacl.so.1 => /lib64/libacl.so.1 (0x000000315e200000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x000000315d200000)
 libc.so.6 => /lib64/libc.so.6 (0x0000003154e00000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003155a00000)
 /lib64/ld-linux-x86-64.so.2 (0x0000003154a00000)
 libattr.so.1 => /lib64/libattr.so.1 (0x0000003162000000)
 libdl.so.2 => /lib64/libdl.so.2 (0x0000003155600000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x000000315ce00000)
bash-3.2$ export LD_PRELOAD=$PWD/libhoard.so
bash-3.2$ ldd /bin/ls
 linux-vdso.so.1 =>  (0x00007fff24bfd000)
 /nfs/cm/users1/emery/scratch/projects/hoard/trunk/src/libhoard.so (0x00002b4885f42000)
 librt.so.1 => /lib64/librt.so.1 (0x0000003159600000)
 libacl.so.1 => /lib64/libacl.so.1 (0x000000315e200000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x000000315d200000)
 libc.so.6 => /lib64/libc.so.6 (0x0000003154e00000)
 libdl.so.2 => /lib64/libdl.so.2 (0x0000003155600000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003155a00000)
 libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000315b200000)
 libm.so.6 => /lib64/libm.so.6 (0x0000003155200000)
 libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000315aa00000)
 /lib64/ld-linux-x86-64.so.2 (0x0000003154a00000)
 libattr.so.1 => /lib64/libattr.so.1 (0x0000003162000000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x000000315ce00000)
bash-3.2$