C函数返回指向结构的指针

jki*_*gel 3 c malloc struct pointers

我开始在C中学习Linux编程,我遇到了以下问题:

time_t now;
struct tm *local_time;

now = time(NULL);
local_time = localtime(&now);
Run Code Online (Sandbox Code Playgroud)

该函数localtime是Linux API的一部分,接受指向time_t哪个指针很好,但为什么它返回一个指向tmstruct 的指针?

我的问题是tm结构初始化后如何管理?

如果localtime静态分配结构,则不能保证结构不会随着程序的进行而被覆盖,如果tm结构是动态分配的,那么程序员必须free不再需要调用结构.

那么返回指针的C函数的正确阶段是什么?

谢谢!

Kev*_*n M 5

根据当地时间表(为清晰起见添加了粗体和斜体):

localtime()函数将日历时间timep转换为细分时间表示,相对于用户指定的时区表示.该函数就像调用tzset(3)一样,并将外部变量tzname设置为当前时区的信息,时区以协调世界时(UTC)和本地标准时间(以秒为单位)之间的差异,并将日光设置为非零值(如果是日光)储蓄时间规则适用于一年中的某些时段.返回值指向静态分配的结构,该结构可能被后续调用任何日期和时间函数覆盖. localtime_r()函数执行相同操作,但将数据存储在用户提供的结构中.它不需要设置tzname,timezone和daylight.

粗体部分表示返回值的行为与您猜测的完全相同,后续调用可能会覆盖先前返回的结构.

您需要立即缓存生成的结构或使用斜体部分中提到的函数.