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