我计划更多地使用 GCC(Linux 和 Windows),我想知道是否有相当于 MSVC 的工具调试堆和STL检查适用于 GCC CRT 和 STL。
我已经了解 Valgrind 等工具,但我正在寻找库中内置的东西。
我不太熟悉调试堆和 STL 检查,但是当我在 Linux 上的 GCC 中遇到内存问题时,我使用一个名为 MALLOC_CHECK_ 的环境变量(来自 malloc(3)):
Linux libc 的最新版本(5.4.23 之后)和 GNU libc (2.x) 包括
malloc 实现可通过环境变量进行调整。什么时候
设置了 MALLOC_CHECK_,使用特殊的(效率较低)实现,即
旨在容忍简单的错误,例如两次调用 free()
使用相同的参数,或超出单个字节(相差一错误)。不是全部
然而,可以防止此类错误,并且可能导致内存泄漏。如果
MALLOC_CHECK_ 设置为 0,任何检测到的堆损坏都会被忽略;如果
设置为 1,诊断信息打印在 stderr 上;如果设置为 2,则调用 abort()
立即地。这很有用,因为否则可能会经常发生崩溃
后来,问题的真正原因就很难找到了。
还有 Electric Fence,它可以帮助捕获缓冲区溢出,并在发生溢出/欠载时立即中止。看自由(3)了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)