作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们一直在努力寻找多线程 C++ 应用程序中的一些堆损坏问题。作为一种技术,我们尝试将 -lmcheck 添加到应用程序的库行。这会导致应用程序在相对较短的时间内因明显的堆损坏而崩溃。
我们的应用确实同时使用了 malloc/free 和 new/delete(视情况而定)。
我们的一个团队想知道 -lmcheck 实际上是否是线程安全的,并在所有 malloc/free 调用周围放置了一个互斥体。崩溃消失了。
有谁知道 -lmcheck 是否应该支持多线程?我想知道我们是否只是误解了我们正在尝试使用的工具,从而导致我们自己不必要的担心。
最佳答案
不,mcheck 不是线程安全的,不应该与多线程应用程序一起使用。这样做会引入额外的问题,因为线程之间没有同步。这是几个月前 Ulrich Drepper(glibc 维护者)对这个主题的回应:
mcheck does not work for multi-threaded code. It cannot possibly do. There is no way to fix this with the technology underlying mcheck.
关于c++ - glibc 的 '-lmcheck' 选项和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314931/
我们一直在努力寻找多线程 C++ 应用程序中的一些堆损坏问题。作为一种技术,我们尝试将 -lmcheck 添加到应用程序的库行。这会导致应用程序在相对较短的时间内因明显的堆损坏而崩溃。 我们的应用确实
我是一名优秀的程序员,十分优秀!