【问题标题】:Does returned struct of localtime() need to be freed?localtime() 的返回结构是否需要释放?
【发布时间】:2011-09-06 20:11:36
【问题描述】:
struct tm *localtime(const time_t *timep);

我检查了man localtime,但没有关于使用后是否有义务清理它的消息。

实际上我对返回指针的函数有很多类似的疑问,你如何确定它是否应该被释放?

【问题讨论】:

标签: c memory-management function-prototypes


【解决方案1】:

此信息应该在手册页中 - 我的 localtime 手册页说:

返回值指向一个 静态分配的结构...

不应将静态分配的对象传递给free(),所以这是你的答案 - 不,你应该释放localtime()的返回值。

在一般情况下判断的唯一方法是查阅相关功能的文档或实现。

【讨论】:

    【解决方案2】:

    您应该担心返回指向静态数据的指针的函数 - 它们通常不是线程安全的,最好避免使用它们,即使您的代码尚未使用在多线程环境中。

    最好使用这些函数的_r形式,即localtime_r()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 2018-08-07
      • 2019-10-24
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2015-07-22
      相关资源
      最近更新 更多