C ++ 11中动态内存的分配和释放是否是线程安全的?换句话说:线程可以像单线程代码一样自由使用new
和delete
吗?
答案 0 :(得分:4)
是的,::operator new
的动态分配和::operator delete
的重新分配是线程安全的。但是,允许实现具有全局锁定(例如,由malloc
调用的new
),其将序列化分配。如果您的计划重新定义::operator new
& ::operator delete
它应该确保它们是线程安全的。
关于delete
,您不应该删除相同的指针两次(例如,在两个不同的线程中)。