考虑以下情况:
SomeType *sptr = someFunction();
// do sth with sptr
我不知道 someFunction() 的内部结构。很明显,指向 someFunction() 返回的对象的指针必须是 malloc'ed 或静态变量。
现在,我用 sptr 做了一些事情,然后退出。显然对象仍然在堆上,这可能是泄漏的来源。
如何避免这种情况?
编辑:
引用比指针更安全。 如果我这样做,是否会调用 SomeType 的析构函数:
{
SomeType &sref = *sptr;
}
任何见解。
最佳答案
您需要阅读有关someFunction
的文档。 someFunction
需要明确定义返回指针的所有权(调用者拥有它并需要调用 delete
还是 someFunction
拥有它并将确保对象在将来的某个时候被破坏)。
如果代码没有记录它的行为,就没有安全的方法来使用它。
关于c++ - 防止内存泄漏(具体情况),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3087499/