7

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

谢谢。

4

3 回答 3

10

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

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

于 2008-10-02T00:04:07.627 回答
5

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

于 2008-10-02T13:22:28.253 回答
1

实际上它返回一个指向已经存在的结构的指针,所以你不应该释放它。

于 2008-10-02T00:03:33.417 回答