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