【发布时间】:2014-05-15 15:51:47
【问题描述】:
在我的库中,我使用 std:shared_ptr`s 来保存我正在使用的通信对象。我有创建这些指针的模板函数。它返回原始指针,因此应用程序可以使用这些对象,而不会产生引用计数的开销(严格的实时应用程序)。
template<typename COBTYPE>
inline COBTYPE* CLink::createCob(COBTYPE cob) {
std::shared_ptr<CCob> c(cob);
if(c->init(this)!=OK){
trace(ERROR,"Cannot add cob, failed to initialize\n");
return NULL;
}
mCobs.push_back(c); //vector of my pointers
return (COBTYPE*) c.get();
}
我很怀疑,什么时候对象会被删除,如果我调用函数为
link.createCob(new CobOfSomeTypo cob()) ?
当 cob 对象必须从堆栈中弹出时,使用 shared_ptr 会阻止删除它吗?
这个概念好吗?
【问题讨论】:
标签: c++ c++11 shared-ptr