C++11 中的动态内存分配是线程安全的吗?
Is dynamic memory allocation in C++11 thread-safe?
C++11 中动态内存的分配和释放是线程安全的吗?换句话说:线程可以像单线程代码一样自由使用new
和delete
吗?
是的,::operator new
的动态分配和 ::operator delete
的释放是线程安全的。然而,一个实现被允许有一个全局锁(例如 new
调用的 malloc
),这将序列化分配。如果你的程序重新定义了 ::operator new
& ::operator delete
它应该确保它们是线程安全的。
关于 delete
你不应该删除同一个指针两次(例如,在两个不同的线程中)。
C++11 中动态内存的分配和释放是线程安全的吗?换句话说:线程可以像单线程代码一样自由使用new
和delete
吗?
是的,::operator new
的动态分配和 ::operator delete
的释放是线程安全的。然而,一个实现被允许有一个全局锁(例如 new
调用的 malloc
),这将序列化分配。如果你的程序重新定义了 ::operator new
& ::operator delete
它应该确保它们是线程安全的。
关于 delete
你不应该删除同一个指针两次(例如,在两个不同的线程中)。