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