【问题标题】:Visual C++ thread safety of free and malloc?free 和 malloc 的 Visual C++ 线程安全?
【发布时间】:2011-01-28 09:05:08
【问题描述】:

有谁知道 free 和 malloc 在 Visual C++ 2010 上是否是线程安全的?

我遇到了一些奇怪的问题,内存被破坏了,我几乎可以归结为这是唯一的可能性。

有谁知道安全装置是否可以开启和关闭以及如何开启?

【问题讨论】:

  • 我相当有信心 - 我假设您正在链接到多线程运行时。
  • 你为什么在 C++ 程序中使用 malloc 和 free ?
  • 因为它叫visual C++,但它也可以编译C。
  • @Nick D:您提到的答案是针对 Linux/POSIX 系统的。 Visual C++ 根本不针对 POSIX 系统。
  • 显然在 Visual C++ 中,所有 stdlib 和 stdio 都是线程安全的,只要您使用 /MD 编译器指令来使用多线程库。我尝试编写冲突代码,但当我添加信号量时它永远不会发生冲突并且表现相同。

标签: windows visual-c++ thread-safety malloc


【解决方案1】:

如果您与 thread-safe libraries 链接并使用正确的标志,是的,malloc 应该是线程安全的。

如果您不这么认为,您应该发布一些代码供我们检查。

我应该提到的是,在绝大多数情况下,它从来都不是图书馆(已经过无数人的测试)。它几乎总是你自己的代码,如果你是彻底的,最多已经测试了几十个:-)

并不是说微软(或任何其他大型软件公司)不发布错误,只是说它们会很快被发现并修复。

【讨论】:

  • 你是对的,我将问题追溯到关键部分的线程切换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2011-04-14
  • 2015-04-23
  • 1970-01-01
  • 2012-06-10
相关资源
最近更新 更多