这段代码中是否有内存泄漏?

时间:2014-08-27 13:58:04

标签: c++ c memory-leaks

我有这段代码:

 int tim=10000; // some random number
 tm *now=localtime(&tim);
 printf("Date is %d/%02d/%02d\n", now->tm_year+1900, now->tm_mon+1, now->tm_mday);
 printf("Time is %02d:%02d\n", now->tm_hour, now->tm_min);

我想知道它是否有内存泄漏的原因是localtime返回一个结构的指针,这意味着它分配内存。但没有人释放它。

此代码是否有内存泄漏?

1 个答案:

答案 0 :(得分:9)

您不会(并且不会)必须显式释放任何内容,因为localtime返回指向静态对象的指针。

C标准说:

  

(C11,7.27.3时间转换函数p1)“除了strftime函数之外,这些函数都返回指向两种静态对象之一的指针:一个分解的时间结构或一个char数组。”< / p>

来自POSIX.1-2008文档,

  

asctime(),ctime(),gmtime()和localtime()函数应返回两个静态对象之一的值:一个分解的时间结构和一个char类型的数组。任何函数的执行都可能会覆盖任何其他函数在这些对象中返回的信息。