学习shared_ptr,碰到一个奇怪的现象,第一次实例化的point,引用是2次。是不是内部产生了2次?
void test_share()
{
shared_ptr<int> p(new int(100)); //
print_func(p);
shared_ptr<int> sp2 = p;
print_func(sp2);
shared s1(p), s2(p); //构造两个自定义类
s1.print();
s2.print();
*p = 20; //修改shared_ptr所指的值
print_func(p);
s1.print();
shared_ptr<int> p1(make_shared<int>(10));
print_func(p1);
std::allocator<int> alc;
shared_ptr<int> p2 = allocate_shared<int>(alc,20);
print_func(p2);
}
结果
count: 2 v=100
count: 3 v=100
count: 4 v=100
count: 4 v=100
count: 5 v=20
count: 4 v=20
count: 2 v=10
count: 2 v=20