Hoard分配器没有"工作"?

Cow*_*boy 0 c++ memory-management hoard

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

我做的是......

export LD_PRELOAD="/path/libhoard.so"

g++ main.cpp -O3 -o bm -lpthread -lrt
Run Code Online (Sandbox Code Playgroud)

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

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

干杯


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

Eme*_*ger 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$ 
Run Code Online (Sandbox Code Playgroud)