12.10
我认为没有问题
12.11
process(std::shared_ptr<int>(p.get()));
会出错,传递给process的是一个临时的智能指针(使用一个内置指针初始化),在函数结束,会被系统释放,从而使p指向的内存被释放了。
12.12
auto p = new int();
auto sp = std::make_shared<int>();
process(sp);//合法,传值使用的一份拷贝,进入函数计时器+1,离开函数-1
process(new int());//不合法,内置指针不能隐式转换成智能指针
process(p);//不合法,内置指针不能隐式转换成智能指针
process(std::shared_ptr<int>(p));//不合法,离开函数内存会被释放,而p会变成空悬指针
12.13
auto sp = std::make_shared<int>();
auto p = sp.get();
delete p;
sp会变成空悬指针