我正在使用valgrind知道我的linux应用程序使用了多少字节。 因此,Valgrind摘要显示了使用的堆块数。因此,我想知道这些块的大小是多少,以了解堆的大小。
这里是Valgrind的堆摘要:
==2604== HEAP SUMMARY:
==2604== in use at exit: 4,828,441 bytes in 1,416 blocks
==2604== total heap usage: 389,448,458 allocs, 389,447,042 frees, 4,664,484,349 bytes allocated
==2604==
我不能简单地执行块/字节,因为最后一个块不一定都是分配的。 感谢
答案 0 :(得分:2)
添加选项--leak-check=full
,valgrind
将按调用堆栈显示块的详细摘要。如果仍可访问块,则可能还需要添加--show-reachable=yes
。从那里,您可以使用一些简单的数学来了解每种类型块的平均大小。
==15210== 46,622 bytes in 1,626 blocks are still reachable in loss record 2 of 3
==15210== at 0x4022724: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==15210== by 0x80562A1: (within /bin/ls)
==15210== by 0x80563D1: (within /bin/ls)
==15210== by 0x8053B84: (within /bin/ls)
==15210== by 0x804F686: (within /bin/ls)
==15210== by 0x804FAEB: (within /bin/ls)
==15210== by 0x406F02B: (below main) (in /lib/libc-2.6.1.so)
==15210==
以上是平均大小的块:
$ echo $((46622/1626))
28
答案 1 :(得分:1)
在大多数机器上(我很确定所有i386和x86_64机器)内存都是用4096字节块进行管理的。