垃圾回收器不期望程序员手动控制对象的回收, 因此失效对象的回收时间是无法预测的, 程序员只能控制需要使用的生命周期(或者使用with获得一定的手动控制能力), 从而难以预测性能....智能指针则完全由程序员控制
垃圾回收器对于资源的释放有时候有优化, 例如将大批需要释放的资源集中起来一起释放, 这可以提高回收的效率, 智能指针大多只能逐个释放....但是垃圾回收器的分析和执行仍然有很大的代价
垃圾回收器有时候会遇到缓存优化的问题, 而且回收的时间可能会造成停顿, 智能指针在这点上表现更好, 可以实时处理
垃圾回收器一般在单独的线程中执行, 而智能指针的回收在当前线程的析构函数中执行...和weak_ptr都有一个堆储存的计数器来维护计数进行内存回收, 为了编写的方便将其写为一个基类来继承
由于shared_ptr和weak_ptr的计数器是共享的, 有可能被多线程竞争修改, 因此需要有额外的...的简单实现
shared_ptr需要一个间接层处理引用计数的问题, 因此带来了额外的开销, unique_ptr则完全没有额外的空间开销
对于性能不敏感的情况, 最好不要使用原始指针
建议不要对某个对象进行两次以上的