我们一直在尝试寻找多线程 C++ 应用程序中的一些堆损坏问题。作为一种技术,我们尝试将 -lmcheck 添加到应用程序的库行。这导致应用程序在相对较短的时间内因明显的堆损坏而崩溃。
我们的应用确实同时使用了 malloc/free 和 new/delete(视情况而定)。
我们的一个团队想知道 -lmcheck 是否实际上是线程安全的,并在所有 malloc/free 调用周围放置了一个互斥锁。崩溃消失了。
有谁知道 -lmcheck 是否应该支持多线程?我想知道我们是否只是误解了我们正在尝试使用的工具,从而导致我们自己不必要的担心。