bal*_*lki 5 c++ boost scoped-ptr
我在这样的小函数中使用scoped_ptr.所以我不必调用删除.对于这种用法,这是否有点过分?我的团队成员更喜欢原始指针和删除.如果碰巧在非常关键的路径中使用scoped_ptr,那么使用它的成本是多少?这不应该是内联的,并且完全等同于在优化的二进制文件中使用普通删除吗?
void myfunc()
{
boost::scoped_ptr<myobj> objptr = someFactory::allocate();
callsomeotherfunc(objptr.get());
}
Run Code Online (Sandbox Code Playgroud)
我不确定性能是否受到影响,但scoped_ptr在此处使用可确保myfunc()异常安全:如果callsomeotherfunc()抛出异常,动态分配的内存仍将被释放.如果scoped_ptr没有使用并且callsomeotherfunc()可以抛出那么函数必须结构类似于:
void myfunc()
{
myobj* objptr = someFactory::allocate();
try
{
callsomeotherfunc(objptr);
delete objptr;
}
catch (const some_exception&)
{
delete objptr;
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
这很容易出错,因为函数的所有未来修改都需要确保delete objptr;在所有可能的出口点上调用.
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |