当前位置:  开发笔记 > 编程语言 > 正文

getpwnam中是否存在内存泄漏的修复或解决方法?

如何解决《getpwnam中是否存在内存泄漏的修复或解决方法?》经验,为你挑选了1个好方法。

getpwnam中是否存在内存泄漏的修复或解决方法?



1> Nicola Bonel..:

getpwnam() 没有内存泄漏.实际上,后续调用将覆盖其静态内部缓冲区.

这种类型的函数是非可重入的,因此是非线程安全的.Paul建议使用getpwnam_r()哪个是可重入版本,在多线程上下文中使用是安全的.

也就是说,内存泄漏是由那些通过分配内存的系统调用引起的,malloc()并且free()一旦返回的数据被使用,就会使应用程序对内存负责.

在这些情况下,建议使用RAII习惯用法,以免忘记释放分配的内存 - 请参阅异常安全.std::tr1::shared_ptr<>也是一种可行的方法:对于shared_ptr,free()当shared_ptr超出范围时,必须向原始指针提供自定义删除器.

在这个角度来看一些危险的功能scandir(),asprintf(),vasprintf()等.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有