使用c ++释放内存

时间:2012-09-04 01:03:59

标签: c++ memory

我写了以下方法:

void ShowInfo::show_time(){
  time_t rawtime;
  struct tm *ti;

  time ( &rawtime );
  ti = localtime ( &rawtime );

  std::cout << std::setw(2) << ti->tm_hour << ":"
            << std::setw(2) << ti->tm_min << ":"
            << std::setw(2) << ti->tm_sec;
}

是否有必要删除struct ti以释放内存,否则当方法结束时它将被删除?

如果有必要删除它,我该怎么做?

2 个答案:

答案 0 :(得分:6)

您应该查看文档。在谷歌粗略搜索表明:

[http://en.cppreference.com/w/cpp/chrono/c/localtime]:

  

返回:成功时指向静态内部std :: tm对象的指针

[http://msdn.microsoft.com/en-us/library/aa246456(V = vs.60)的.aspx]

  

备注:gmtime,mktime和localtime都使用单个静态分配的tm结构进行转换。

因此似乎没有动态分配,因此无需将内存释放回系统。

除了实际答案之外,您应该了解内存管理 是函数接口的一部分,必须记录。文档是查找此信息的最简单的地方。特别是如果你必须释放内存,文档肯定会指出这一点。

答案 1 :(得分:1)

不,没有必要。结构struct tm是静态分配的,因此不应该调用free