这两个不要混在一起讲。
unique_ptr的作用是把non-lexical lifetime转换成lexical lifetime。很多时候,是因为对象大小不确定,无法直接在栈上构造。
你的wrapper明明可以直接栈上构造,搞什么unique_ptr? 实现move ctor就行了。
shared_ptr所指向的对象的lifetime显然是超过单个shared_ptr的lifetime的。这个对象显然应该在堆上,而不是嵌入在shared_ptr对象里。能节省一点内存的,无非是把counter和所指对象分配在一起,std::make_shared.
你说我的wrapper是immutable,所以我非要只在堆上分配counter,wrapper我每个shared_ptr存一份拷贝,理论上也不是不行,最好别折腾shared_ptr,你自己实现一个专用的指针好了。
【 在 Madlee 的大作中提到: 】
: 丢给unique_ptr, shared_ptr之类的智能指针去管理啊。
: 就是希望能在不增加overhead的情况下能c++的智能指针去管理。
--
修改:ilovecpp FROM 124.78.175.*
FROM 124.78.175.*