【发布时间】:2011-09-06 20:11:36
【问题描述】:
struct tm *localtime(const time_t *timep);
我检查了man localtime,但没有关于使用后是否有义务清理它的消息。
实际上我对返回指针的函数有很多类似的疑问,你如何确定它是否应该被释放?
【问题讨论】:
标签: c memory-management function-prototypes
struct tm *localtime(const time_t *timep);
我检查了man localtime,但没有关于使用后是否有义务清理它的消息。
实际上我对返回指针的函数有很多类似的疑问,你如何确定它是否应该被释放?
【问题讨论】:
标签: c memory-management function-prototypes
此信息应该在手册页中 - 我的 localtime 手册页说:
返回值指向一个 静态分配的结构...
不应将静态分配的对象传递给free(),所以这是你的答案 - 不,你应该不释放localtime()的返回值。
在一般情况下判断的唯一方法是查阅相关功能的文档或实现。
【讨论】:
您应该担心返回指向静态数据的指针的函数 - 它们通常不是线程安全的,最好避免使用它们,即使您的代码尚未使用在多线程环境中。
最好使用这些函数的_r形式,即localtime_r()
【讨论】: