在我调用之后getpwuid(uid)
,我有一个指针的引用。当我不再使用它时,我应该释放它吗?阅读手册页,它说它引用了一些静态区域,可能会被后续调用相同的函数覆盖,所以我不确定我是否应该触摸那个内存区域。
谢谢。
不,您不需要释放结果。您只能在使用 malloc(3)、calloc(3) 或 realloc(3) 分配在堆上的指针上调用 free(3)。
静态数据是程序数据或 bss 段的一部分,并且将持续存在直到进程退出(或被 exec(2) 覆盖)。
将*_r
函数 ( getpwuid_r()
) 用于线程安全(可重入)函数,允许您提供缓冲区空间来放置返回的信息。请务必检查 errno 以了解成功或失败。如果您不使用可重入函数,您可以安全地假设该函数返回的数据不需要释放,但也会被对同一函数的连续调用覆盖。
实际上它返回一个指向已经存在的结构的指针,所以你不应该释放它。