C++11 中动态内存的分配和释放是线程安全的吗?换句话说:线程可以使用 new
和 delete
像单线程代码一样自由吗?
最佳答案
是的,由 ::operator new
动态分配和解除分配 ::operator delete
是线程安全的。但是,允许实现具有全局锁(例如,在 malloc
上由 new
调用)将序列化分配。如果您的程序重新定义 ::operator new
& ::operator delete
它应该确保它们是线程安全的。
关于delete
你不应该两次删除同一个指针(例如在两个不同的线程中)。
关于multithreading - C++11 中的动态内存分配是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792247/