关于time.h中一个函数的问题
<time.h>
中:struct tm * localtime(const time_t * timer);
这个函数返回一个结构体的指针,这个指针是不是动态分配的呢?
如果是的话,要不要手工释放所占的内存?
谢了先!
[解决办法]
#include <stdio.h>
#include <string.h>
#include <time.h>
void main( void )
{
struct tm *newtime;
char am_pm[] = "AM ";
time_t long_time;
time( &long_time ); /* Get time as long integer. */
newtime = localtime( &long_time ); /* Convert to local time. */
if( newtime-> tm_hour > 12 ) /* Set up extension. */
strcpy( am_pm, "PM " );
if( newtime-> tm_hour > 12 ) /* Convert from 24-hour */
newtime-> tm_hour -= 12; /* to 12-hour clock. */
if( newtime-> tm_hour == 0 ) /*Set hour to 12 if midnight. */
newtime-> tm_hour = 12;
printf( "%.19s %s\n ", asctime( newtime ), am_pm );
}
Output
Tue Mar 23 11:28:17 AM
[解决办法]
这个函数的内存空间是由调用者申请好的,返回的地址事实上也是这个地址
[解决办法]
C库的很多函数返回的指针都是内部申请到的静态指针或者是传入参数相关联的指针。
如果是静态地址,man中都会指明不是线程安全的。
一般情况下,库函数返回的指针都是不需要手工释放的。即使要释放,也会告诉你怎么做。
多看看man手册会更好些。