是否需要取消分配本地时间的内存?

Avi*_*ano 18 c++ memory-management

void log(){
    time_t current = time(0);
    tm *ptm = localtime(&current);
        stuf...
}
Run Code Online (Sandbox Code Playgroud)

只是想确定 - 我需要在方法结束时释放tm指针分配的内存吗?

Alo*_*ave 23

不,你不应该解除分配,结构是静态分配的.

查看文档:

成功时返回值
指向静态内部std::tm对象,NULL否则返回.该结构可以在std::gmtime,std::localtime和之间共享std::ctime,并且可以在每次调用时被覆盖.

  • s /不应该/不得/ (2认同)
  • @user1495181:Posix 有 `localtime_r`,它是线程安全的。你传入一个指向 `struct tm` 结果的指针。但它不在标准 C++ 中。在最新版本的 C (C11) 中,它*是*,作为`localtime_s`。 (2认同)

Ros*_*ost 8

不,你不应该.这种结构是静态分配和由函数共享gmtimelocaltime.每次调用其中一个函数时,都会覆盖此结构的内容.

所以要小心结果 - 例如立即复制它们并且不存储指针.