linux getlogin() 内存泄漏

2024-01-11

我有以下代码,由于某种原因 valgrind 在 getlogin() 函数中发现了一些内存泄漏。 代码:

#include<unistd.h>
#include<stdio.h>

int main()
{
    char *userName = getlogin();
    printf("%s\n",userName);

    return 0;
}

我使用的 valgrind 命令: valgrind --leak-check=full -v ./

我得到的错误:

 HEAP SUMMARY:
==2405==     in use at exit: 300 bytes in 11 blocks
==2405==   total heap usage: 67 allocs, 56 frees, 9,106 bytes allocated
==2405== 
==2405== Searching for pointers to 11 not-freed blocks
==2405== Checked 72,264 bytes
==2405== 
==2405== 300 (60 direct, 240 indirect) bytes in 1 blocks are definitely lost in loss record 11 of 11
==2405==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2405==    by 0x4F37CD4: nss_parse_service_list (nsswitch.c:678)
==2405==    by 0x4F38795: __nss_database_lookup (nsswitch.c:175)
==2405==    by 0x55F6623: ???
==2405==    by 0x4EF144C: getpwuid_r@@GLIBC_2.2.5 (getXXbyYY_r.c:256)
==2405==    by 0x4F145AE: __getlogin_r_loginuid (getlogin_r.c:68)
==2405==    by 0x4F14304: getlogin (getlogin.c:35)
==2405==    by 0x400550: main (tmp1.c:6)
==2405== 
==2405== LEAK SUMMARY:
==2405==    definitely lost: 60 bytes in 1 blocks
==2405==    indirectly lost: 240 bytes in 10 blocks
==2405==      possibly lost: 0 bytes in 0 blocks
==2405==    still reachable: 0 bytes in 0 blocks
==2405==         suppressed: 0 bytes in 0 blocks
==2405== 
==2405== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)
--2405-- 
--2405-- used_suppression:      2 dl-hack3-cond-1
==2405== 
==2405== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)

为什么会发生这种情况?我该怎么做才能释放它?还有其他方法可以获取用户名吗?提前致谢。


使用 valgrind 3.10.0 我没有错误

==27656== 
==27656== HEAP SUMMARY:
==27656==     in use at exit: 0 bytes in 0 blocks
==27656==   total heap usage: 67 allocs, 67 frees, 9,101 bytes allocated
==27656== 
==27656== All heap blocks were freed -- no leaks are possible
==27656== 
==27656== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==27656== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)>

尝试升级或者在 getlogin() 之后调用 __libc_freeres() 但你的程序没有错误,这种类型的内存泄漏是可以接受的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux getlogin() 内存泄漏 的相关文章

随机推荐

  • 使用 UIAppearance 设置 UITableView 的背景颜色

    我正在尝试普遍更改表格视图的背景颜色 它是 UINavigationController 和 TabBarController 应用程序的组合 我尝试将以下内容放入 AppDelegate applicationDidFinishLaunc
  • 是否有任何 EJB 迁移工具可用于将 EJB 2.1 迁移到 EJB 3.x

    最好的方法可能是手动完成 但在大型项目中 您需要一些工具来帮助您 正是这个想法促使我寻找一种工具 是否有任何 EJB 迁移工具可用于将 EJB 2 0 迁移到 3 x 它只开发了很短一段时间 但在一段时间内我们确实有一个 eclipse 插
  • 将 JPanel 保存为图像

    我正在开发一个应用程序 允许用户在图层中加载图像 用户可以在另一层上绘制一些图片并仅保存用户绘制的图像 这是我的代码 import java awt Dimension import java awt Graphics import jav
  • Nginx:stat() 失败(13:权限被拒绝)

    我使用默认配置 同时添加安装在我的 ubuntu 12 04 机器上的 nginx 的特定目录 server listen 80 listen for ipv4 this line is default and implied listen
  • 如何让Python除以-0.0和0.0分别得到-Inf和Inf?

    我遇到的情况是 除以 0 0 或 0 0 是合理的 我希望分别看到 Inf 和 Inf 作为结果 看起来Python很喜欢抛出一个 ZeroDivisionError float division by zero 在任一情况下 显然 我认为
  • 如何从Windows命令提示符修改Java控制面板选择(对应于deployment.properties文件)?

    如何从Windows命令提示符修改Java控制面板选择 对应于deployment properties文件 具体来说 我正在寻找可以影响更改的命令 Action for local applets 选择 在 Custom Security
  • 使用一些 Maven 插件重命名 jar 内的文件

    我有一个由 maven shade plugin 构建的 jar 它包含带有多个文件的 META INF services 这些文件的名称错误 因为错误https issues apache org jira browse MSHADE 1
  • 我可以在没有 Bluemix 的情况下使用 IBM Watson 服务吗?

    我一直在使用 AWS 来托管我的后端服务器 注册帐户的最佳方式是什么 这样我就可以直接从我的服务器调用 Watson 服务 而无需在 Bluemix 上拥有帐户 如果是 怎么办 我在 Watson 的网站上找不到这个 谢谢 您绝对可以从 B
  • 在两个屏幕上运行的 iOS 应用程序(无镜像)

    我创建了一个 iPad 应用程序 其中包含幻灯片 当用户点击该幻灯片时 他 她可以输入一些信息 我现在想做的是通过AirPlay 或电缆 如果可能的话 但这似乎只是镜像 连接电视和iPad时在电视上显示幻灯片内容 这可以做到吗 我们能否让幻
  • Spark 结构化流式传输多个 WriteStream 到同一接收器

    Two Writestream在 Spark Structured Streaming 2 2 1 中 到同一个数据库接收器的操作不会按顺序发生 请建议如何使它们按顺序执行 val deleteSink ds1 writestream ou
  • jquery跨域认证

    我将 Jetty 服务器配置为允许跨域 http 请求 allowedOrigins 并允许使用其 CrossOriginFilter 进行跨域身份验证 allowCredentials true 无需身份验证的跨域 http 请求可以正常
  • SQL - 插入一行并返回主键

    我已在存在主键的表中插入了包含一些数据的行 如何 SELECT 刚刚插入的行的主键 我应该更具体地提到我目前 使用 SQLite 对于 MS SQL Server SCOPE IDENTITY http msdn microsoft com
  • 如何在React typescript中读取xml文件(toolsbox.xml)

    我无法在 tsx 文件中导入 xml 文件 但在 jsx 文件中我可以访问该 xml 文件 您需要为打字稿定义一个模块来评估 否则它将尝试寻找类似的东西toolbox xml ts 名为 XML d ts 的文件中的一些内容 为此放置在 s
  • Vue 警告:未知的自定义元素: - 您是否正确注册了组件?

    我是一名新生 当我使用自定义组件时 它给了我这个错误 Vue warn Unknown custom element 您是否正确注册了组件 The ModalBase组件中使用的组件NoticeModal vue and NoticeMod
  • 实体框架支持的数据库

    我将制作一个最终用户桌面应用程序 因此我需要一个相对较小的数据库 例如 Firebird 或 SqlLite Entity Framework 4 是否支持 SQL Server 以外的其他数据库 ADO NET 数据提供程序 http m
  • ReactJS:我可以创建自己的 SyntheticEvent 吗?

    我正在使用 ReactJS 它是 SyntheticEvent 来跟踪事件及其目标 DOM 节点 我正在创建一些可变组件 我希望它们触发 SyntheticEvent 来跟踪 DOM 并使用以下命令跟踪更改的值e target and e
  • 使用 jQuery 插入 HTML

    如果我有一个 HTML 块 例如 div div div div
  • 将 .msi 转换为 .exe 的最佳工具包是什么?

    我想将 msi 封装到 exe 中以便添加 硬编码文件夹位置 例如 C Program Files x86 TEST 添加安装版本文件 使用静默安装 使用命令行开关 安装 卸载 日志生成 添加 Windows 注册表足迹 微星定制 用于安装
  • 使用 Web 视图下载文件

    在一个项目中 我想在 Web 视图中加载的 http 页面中下载 mp3 文件 下载的文件可以通过手机驱动器或保管箱等应用程序打开 当用户单击 Web 视图中的链接时 它应该将其下载到 iPhone 在服务器端 mp3 文件位于 webro
  • linux getlogin() 内存泄漏

    我有以下代码 由于某种原因 valgrind 在 getlogin 函数中发现了一些内存泄漏 代码 include