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

时间:2008-10-01 23:56:41

标签: c linux getpwuid

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

感谢。

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

实际上它返回一个指向现有结构的指针,所以你应该释放它。