1

我一直在做游戏,很多时候我想使用智能指针,但我希望它像一个共享指针,当引用计数达到 0 时它会自动删除内存,并且能够当我想要它时强制它释放,并且所有 shared_ptr 都应该知道该对象已被释放。

这是这样做的吗?

class Data
    {
    //stuff
    };

shared_ptr< unique_ptr< Data > > mBestOfBothWorlds( new unique_ptr<Data>( new Data() ) );

这对性能有何影响?它会非常慢吗?它会正常工作吗?

似乎您不仅可以获得自动内存管理,还可以获得手动管理,以及将数据与其他数据交换的能力,并且拥有 shared_ptr 的每个人都可以轻松获得新数据。

4

1 回答 1

4

unique_ptr是一个非常薄的包装,所以我不明白你为什么决定它会非常慢。虽然我认为您的方法没有任何技术问题,但我认为您违反了智能指针的目的。智能指针都是关于所有权的,只有它们应该管理所有权,你不应该触摸它。在我看来,使用这种方法,你总有一天会遇到一些讨厌的错误。

于 2013-03-04T05:59:33.367 回答