这是否提供自动内存管理以及内存控制?的shared_ptr<的unique_ptr<数据> &GT ;?

时间:2013-03-04 05:33:15

标签: c++ c++11 smart-pointers

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

这样做吗?

class Data
    {
    //stuff
    };

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

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

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

1 个答案:

答案 0 :(得分:4)

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