首页 > 解决方案 > “静态区域”是什么意思?

问题描述

中的“静态区域”是什么意思man GETPWNAM(3)

返回值可能指向一个静态区域,并且可能被后续调用 getpwent(3)、getpwnam() 或 getpwuid() 覆盖。(不要将返回的指针传递给 free(3)。)

这可能是一个非常微不足道的问题,但我很好奇。

标签: cstaticmanpage

解决方案


这意味着基本上有一个全局变量,其内存由所有提到的函数共享,并且所有这些函数都返回一个指向该共享变量的指针。

所以如果你这样做

struct passwd *pwd1 = getpwnam("foo");
struct passwd *pwd2 = getpwnam("bar");

那么有可能,pwd1 == pwd2第二次调用getpwnam覆盖了第一次调用收集的结构中的数据。


推荐阅读