c++ - 防止内存泄漏(具体情况)

标签 c++ memory-leaks

考虑以下情况:

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/

相关文章:

c++在请求特定字节的新之后删除

c# - C++ dll 在 C# 代码中抛出 EntryPointNotFoundException

c++ - 将模板类型名转换为 uint64

c++ - 在这种情况下,通过构造函数或显式函数进行隐式转换更好吗?

c++ - 在 longjmp/croak 之前显式调用析构函数

ios - 仪器:泄漏和分配 (tvOS)

java - 修复ThreadPool内存泄漏

malloc() 和 free() 的 C 动态内存问题

c++ - opencv imshow 导致内存泄漏 (c++)

c++ - 覆盖模板类上的赋值运算符时的奇怪行为