Valgrind
是非常流行的内存检查工具, 不幸的是其报告可读性较差.
如果你认为在Libev
中发现了一个错误(内存泄漏、未初始化), 那么请多次检查:
1 | ==2274== definitely lost: 0 bytes in 0 blocks. |
这样就没有内存泄漏了! 就像被全局、静态变量引用的内存不是内存泄漏一样. 与之类似的情况是, Valgrind
可能会报告内核错误, 就好像是Libev
中的错误似的. 这样的情况会混淆视听.
请记住, Valgrind
是一个很好的内存检查工具. 但是不要盲目信仰它. 如果您不确定某些事情, 可以在Libev
邮件列表附上完整的Valgrind
报告.