代码在i7-4790处理器(x86-64)上的VC ++ 2013(v120)下编译没有问题。
int main()
{
std::atomic<std::unique_ptr<int>> p;
p.store(std::make_unique<int>(5));
}
一旦main()
返回,我就会崩溃:
表达式:_BLOCK_TYPE_IS_VALID(pHead-&gt; nBlockUse)
发生了什么?
答案 0 :(得分:11)
您无法使用std::atomic
实例化std::unique_ptr
。 cppreference
std :: atomic可以用任何TriviallyCopyable类型实例化.std :: atomic既不可复制也不可移动。
std::unique_ptr
不是TriviallyCopyable
该课程符合MoveConstructible和MoveAssignable的要求,但不符合CopyConstructible或CopyAssignable的要求。
您可以使用std::shared_ptr