@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 – 防止内存泄漏(特定于案例)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)