dim*_*mba 8 gcc glibc memory-corruption
默认情况下,在不使用 malloc_check_ 或 mcheck() 的情况下,glibc 会执行一些不会损害性能的小检查,例如对同一内存块调用两次 free()。这就是为什么您会收到其中一些消息,但您不会获得 malloc 替代 api 提供的所有消息,您可以通过使用 MALLOC_CHECK_ 获得这些消息(它正在执行更多测试,但也消耗更多的 CPU 资源)。您可以通过触发错误并使用或不使用 malloc_check_ 进行测试来检查这一点。例如,对于一个简单的 double-free(),我会收到“double free 或损坏(顶部)”或“free():无效指针”错误,具体取决于我是否设置 MALLOC_CHECK_ 。
为了回答 1/ 问题,mcheck 依赖于 malloc 钩子,因为它们存在(大约 15 年),并且这些钩子并不是线程安全的。
来源:glibc/malloc/malloc.c,http://sourceware.org/bugzilla/show_bug.cgi ?id=9939
| 归档时间: |
|
| 查看次数: |
2778 次 |
| 最近记录: |