1
为什么下面的代码产生一个SIGABRT?我认为这是shared_ptr背后的全部想法,是你可以共享所有权。两个std :: shared_ptr运行时错误
#include<iostream>
#include<memory>
void func1()
{
int* i = new int (10);
std::shared_ptr<int> sp1 (i);
std::shared_ptr<int> sp2 (i);
}
int main()
{
func1();
return 0;
}
那么为什么'std :: shared_ptr sp2 = std :: make_shared (sp1);'不工作? –
wizurd
@wizurd因为它仍然产生一个新的唯一的“共享”指针,所以你仍然有两个不同的共享指针指向同一个对象,每个指针都有自己的引用计数器。 –