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

Is dynamic memory allocation in C++11 thread-safe?

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

是的,::operator new 的动态分配和 ::operator delete 的释放是线程安全的。然而,一个实现被允许有一个全局锁(例如 new 调用的 malloc),这将序列化分配。如果你的程序重新定义了 ::operator new & ::operator delete 它应该确保它们是线程安全的。

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