为什么在调用localtime()函数之前不需要malloc struct tm指针?

时间:2013-07-11 06:41:39

标签: c++ pointers localtime

我的代码是

#include <iostream>
#include <ctime>

using namespace std;

void main()
{
    time_t nowTime;
    struct tm *nowStruct;

    time(&nowTime);

    nowStruct = localtime(&nowTime);
    cout << nowStruct->tm_hour << ":" << nowStruct->tm_min << endl;
}

我怀疑用于存储struct tm的内存地址在哪里。

1 个答案:

答案 0 :(得分:2)

localtime使用内部的全局缓冲区(或者可能是线程本地的),它返回的地址。这种保持全局状态的做法与strtokrand的工作方式类似。请注意,这使得该函数本质上是非租用的,并且可能是线程不安全的。