multithreading - C++11 中的动态内存分配是线程安全的吗?

标签 multithreading c++11 dynamic-memory-allocation

C++11 中动态内存的分配和释放是线程安全的吗?换句话说:线程可以使用 newdelete像单线程代码一样自由吗?

最佳答案

是的,由 ::operator new 动态分配和解除分配 ::operator delete是线程安全的。但是,允许实现具有全局锁(例如,在 malloc 上由 new 调用)将序列化分配。如果您的程序重新定义 ::operator new & ::operator delete它应该确保它们是线程安全的。

关于delete你不应该两次删除同一个指针(例如在两个不同的线程中)。

关于multithreading - C++11 中的动态内存分配是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792247/

相关文章:

c++ - VC++ 运行时错误 : Debug Assertation Failed

c++ - 为什么我的线程计数器并不总是完成?

c++ - 为什么 stringstream 停止接收字符串? [C++]

C++删除动态数组的最后一个元素

c++ - 如何制作需要执行此操作的功能?

c++ - Constexpr 变量和除法

c++ - C++ 中的 volatile : should I define a variable which may changes by several thread as volatile?

java - 这些java线程是否正在等待它获取的锁?

c - C中线程同步和条件变量的问题

c++ - 支持 C++11 的开源 STL 实现