不要用自己的方式瞎摸索, 你这都是违规行为,多看看书.
第一种方式资源会自动销毁.
第二中方式, p = t 没法通过编译的.
给你几条建议:
不要这么喜欢malloc, 使用new/delete
shared_ptr<>是基于RAII思想( resource aquisition is initialization ), 所以你要这样
share_ptr
使用sp->这样方式去引用资源, 而不是raw ptr = sp.get(),
这个两种方式在p的生命周期完成后都会释放,t都会变成了野指针。
另外这种写法是有问题的,shared_ptr默认使用delete释放内存,而用malloc生气的内存应该用free释放。可以改为使用new申请内存,或者自定义shared_ptr的删除函数,改为使用free
一切只malloc不free和只new不delete[]的行为都是耍流氓.