我一直在研究游戏,很多时候我想使用智能指针,但我希望它像一个共享指针,在引用计数达到0时自动删除内存,以及能够在我想要它时强制它自由,并且所有shared_ptr应该知道该对象已被释放。
这样做吗?
class Data
{
//stuff
};
shared_ptr< unique_ptr< Data > > mBestOfBothWorlds( new unique_ptr<Data>( new Data() ) );
这对性能有何影响?这会非常慢吗?它会正常工作吗?
似乎不仅可以获得自动内存管理,还可以进行手动管理,并且能够将数据与其他数据交换,拥有shared_ptr的每个人都可以轻松获取新数据。
答案 0 :(得分:4)
unique_ptr
是一个非常薄的包装器,所以我不明白为什么你认为它会非常慢。虽然我没有看到您的方法存在任何技术问题,但我认为您违反了智能指针的目的。智能指针都是关于所有权的,只有他们应该管理你不应该触及它的所有权。在我看来,这种方法有一天你会得到一些讨厌的错误。