使用shared_ptr构造的布局:
使用make_shared的布局:
如果两个shared_ptr指向同一个对象:
这里有一种错误的写法:
auto pw = new Widget; // pw是原始指针 … std::shared_ptrp(pw); // 为*pw创建控制块 … std::shared_ptr q(pw); // 为*pw创建第二个控制块
布局如下:
p和q指向同一个对象,它们本应该共享一个控制块,而上述这种错误写法导致它们各自维护一个控制块,而且引用计数是错误的,这会导致悬空指针问题



