Valgrind

Valgrind是非常流行的内存检查工具, 不幸的是其报告可读性较差.

如果你认为在Libev中发现了一个错误(内存泄漏、未初始化), 那么请多次检查:

1
2
3
==2274==    definitely lost: 0 bytes in 0 blocks.
==2274== possibly lost: 0 bytes in 0 blocks.
==2274== still reachable: 256 bytes in 1 blocks.

这样就没有内存泄漏了! 就像被全局、静态变量引用的内存不是内存泄漏一样. 与之类似的情况是, Valgrind可能会报告内核错误, 就好像是Libev中的错误似的. 这样的情况会混淆视听.

请记住, Valgrind是一个很好的内存检查工具. 但是不要盲目信仰它. 如果您不确定某些事情, 可以在Libev邮件列表附上完整的Valgrind报告.