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

时间:2020-03-06 15:00:14  来源:igfitidea点击:

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

谢谢。

解决方案

实际上,它返回一个指向现有结构的指针,因此我们不应释放它。

不。我们不需要释放结果。我们只能使用malloc(3),calloc(3)或者realloc(3)对在堆上分配的指针调用free(3)。

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

对线程安全(可重入)函数使用* _r函数(getpwuid_r()),这些函数允许我们提供缓冲区空间来放置返回的信息。请确保检查errno是否成功。如果我们不使用可重入函数,则可以放心地假定该函数返回的数据不需要释放,但是也可以通过连续调用同一函数来覆盖。