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

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

谢谢。

Solutions Collecting From Web of "我应该释放在Linux中getpwuid()返回的指针吗?"

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

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

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

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