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

oz1*_*1cz 4 multithreading dynamic-memory-allocation c++11

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

Bas*_*tch 5

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

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