我应该在 Linux 中释放 getpwuid() 返回的指针吗?

发布于 2024-07-06 16:46:57 字数 134 浏览 6 评论 0原文

调用 getpwuid(uid) 后,我获得了对指针的引用。 当我不再使用该指针时,是否应该释放它? 阅读手册页,它说它引用了一些静态区域,这些区域可能会被后续调用相同的函数所覆盖,所以我不确定是否应该触摸该内存区域。

谢谢。

After I call getpwuid(uid), I have a reference to a pointer. Should I free that pointer when I don't use it anymore? Reading the man pages, it says that it makes reference to some static area, that may be overwritten by subsequent calls to the same functions, so I'm not sure if I should touch that memory area.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

も让我眼熟你 2024-07-13 16:46:57

不。您不需要释放结果。 您只能对使用 malloc(3)、calloc(3) 或 realloc(3) 在堆上分配的指针调用 free(3)。

静态数据是程序数据或 bss 段的一部分,并将持续存在,直到进程退出(或被 exec(2) 覆盖)。

No. You do not need to free the result. You can only call free(3) on pointers allocated on the heap with malloc(3), calloc(3) or realloc(3).

Static data is part of a program's data or bss segments and will persist until the process exits (or is overwritten by exec(2)).

ゃ人海孤独症 2024-07-13 16:46:57

使用 *_r 函数 (getpwuid_r()) 作为线程安全(可重入)函数,允许您提供缓冲区空间来放置返回的信息。请务必检查errno 表示成功或失败。 如果您不使用可重入函数,您可以安全地假设该函数返回不需要释放的数据,但也将被对同一函数的连续调用所覆盖。

Use the *_r functions (getpwuid_r()) for thread-safe (reentrant) functions that allow you to supply the buffer space to place the returned information in. Be sure check errno for success or failure. If you do not use reentrant functions you can safely assume that the function returns data that does not need to be freed, but will also be overwritten by successive calls to the same function.

债姬 2024-07-13 16:46:57

实际上,它返回一个指向已存在结构的指针,因此您不应该释放它。

Actually it returns a pointer to an already existing structure, so you should not free it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文