考虑以下情况:
SomeType *sptr = someFunction();
// do sth with sptr
Run Code Online (Sandbox Code Playgroud)
我不知道someFunction()的内部.很明显,someFunction()返回的对象的指针必须是malloc'ed或者是静态变量.
现在,我用sptr做一些事情,然后退出.显然,对象仍然在堆上,这可能是泄漏源.
我该如何避免这种情况?
编辑:
引用比指针更安全.如果我这样做,将调用SomeType的析构函数:
{
SomeType &sref = *sptr;
}
Run Code Online (Sandbox Code Playgroud)
任何见解.
R S*_*hko 19
您需要阅读文档someFunction. someFunction需要清楚地定义返回指针的所有权(调用者是否拥有它并需要调用delete或someFunction拥有它,并确保将来某个时候对象被破坏).
如果代码没有记录它的行为,则没有安全的方法来使用它.
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |