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

c – 防止内存泄漏(特定于案例),第1张

概述考虑以下情况: SomeType *sptr = someFunction();// do sth with sptr 我不知道someFunction()的内部.很明显,someFunction()返回的对象的指针必须是malloc’ed或者是静态变量. 现在,我用sptr做一些事情,然后退出.显然,对象仍然在堆上,这可能是泄漏源. 我该如何避免这种情况? 编辑: 引用比指针更安全.  如果我 考虑以下情况:

@H_301_8@

@H_301_8@

SomeType *sptr = someFunction();// do sth with sptr

我不知道someFunction()的内部.很明显,someFunction()返回的对象的指针必须是malloc’ed或者是静态变量.@H_301_8@

现在,我用sptr做一些事情,然后退出.显然,对象仍然在堆上,这可能是泄漏源.@H_301_8@

我该如何避免这种情况?@H_301_8@

编辑:@H_301_8@

引用比指针更安全.
 如果我这样做,将调用SomeType的析构函数:@H_301_8@

@H_301_8@

{  SomeType &sref = *sptr;}

任何见解.@H_301_8@解决方法 您需要阅读someFunction上的文档. someFunction需要清楚地定义返回指针的所有权(调用者是否拥有它并需要调用delete或someFunction拥有它,并确保将来某个时候对象被破坏).

@H_301_8@

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

以上是内存溢出为你收集整理的c – 防止内存泄漏(特定于案例)全部内容,希望文章能够帮你解决c – 防止内存泄漏(特定于案例)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1223469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存