防止内存泄漏(特定于案例)

sud*_*03r 3 c++ memory-leaks

考虑以下情况:

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需要清楚地定义返回指针的所有权(调用者是否拥有它并需要调用deletesomeFunction拥有它,并确保将来某个时候对象被破坏).

如果代码没有记录它的行为,则没有安全的方法来使用它.

  • 这是正确的答案 - someFunction应该告诉你如何清理它. (3认同)