'a static area' 是什么意思?
What is meant by 'a static area'?
man GETPWNAM(3)
中的'a static area'是什么意思?
The return value may point to a static area, and may be
overwritten by subsequent calls to getpwent(3), getpwnam(), or
getpwuid(). (Do not pass the returned pointer to free(3).)
这可能是一个非常微不足道的问题,但我很好奇。
这意味着基本上有一个全局变量,其内存由所有提到的函数共享,所有这些函数returns指向该共享变量的指针。
所以如果你这样做,例如
struct passwd *pwd1 = getpwnam("foo");
struct passwd *pwd2 = getpwnam("bar");
那么有可能pwd1 == pwd2
,第二次调用getpwnam
覆盖了第一次调用收集的结构中的数据。
man GETPWNAM(3)
中的'a static area'是什么意思?
The return value may point to a static area, and may be overwritten by subsequent calls to getpwent(3), getpwnam(), or getpwuid(). (Do not pass the returned pointer to free(3).)
这可能是一个非常微不足道的问题,但我很好奇。
这意味着基本上有一个全局变量,其内存由所有提到的函数共享,所有这些函数returns指向该共享变量的指针。
所以如果你这样做,例如
struct passwd *pwd1 = getpwnam("foo");
struct passwd *pwd2 = getpwnam("bar");
那么有可能pwd1 == pwd2
,第二次调用getpwnam
覆盖了第一次调用收集的结构中的数据。