【问题标题】:How time.h handles memorytime.h 如何处理内存
【发布时间】:2020-04-28 09:15:26
【问题描述】:

抱歉,这可能是个愚蠢的问题,但我在time.h 的文档中找不到答案。

所以当我打电话时,例如,gmtime

time_t today;
struct tm *info;
time(&today);
info = gmtime(&today);

它返回指向 tm 结构的指针。我假设它返回指向使用 malloc 分配的内存部分的指针,但是如果我现在为 info 调用 free - free 返回错误。那么库time.h 是如何处理内存分配的,我应该担心“释放”它吗?

【问题讨论】:

标签: c time.h


【解决方案1】:

它返回指向使用 malloc 分配的内存部分的指针,但如果我现在调用 free 获取信息

不,gmtime 返回一个指向静态对象的指针。

来自C99 7.23.3p1:

除了 strftime 函数,这些函数都返回一个指向以下两种静态对象之一的指针:分解的时间结构或 char 数组。执行返回指向这些对象类型之一的指针的任何函数可能会覆盖任何相同类型的对象中的信息,这些对象由任何先前调用它们中的任何一个返回的值所指向的相同类型的对象。实现的行为就像没有其他库函数调用这些函数一样。

库 time.h 如何处理内存分配

它使用分配的内存,静态存储持续时间对您的程序的整个执行有效。

我应该担心“释放”它吗?

没有。

【讨论】:

    猜你喜欢
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2015-01-26
    • 2020-05-24
    • 2019-10-08
    • 1970-01-01
    相关资源
    最近更新 更多