gmtime同时改变两个指针

Kil*_*zor 4 c++ datetime

我有这个代码:

time_t tt = time(NULL);
tm* currentTime = gmtime(&tt);
tm* storedTime = gmtime(&m_time);
Run Code Online (Sandbox Code Playgroud)

其中m_time是构造时的time_t成员数据集.当我使用此数据成员设置storedTime时,当前时间获取相同的值,就像两个tm指针指向同一个变量一样.这是预期的行为吗?我怎么能分开tm结构来比较时间?

谢谢

Adr*_*tti 5

从文档gmtime:

该结构由gmtime和localtime函数静态分配和共享.每次调用其中一个函数时,都会覆盖此结构的内容.

使用此代码创建副本:

time_t tt = time(NULL);

tm currentTime = *gmtime(&tt);
tm storedTime = *gmtime(&m_time);
Run Code Online (Sandbox Code Playgroud)

(这里的指针deference相当于memcpy(&currentTime, gmtime(&tt), sizeof(tm)))

  • 或者`tm currentTime =*gmtime(&tt);`.由于某种原因,我似乎更清洁:) (3认同)