1

我写了以下方法:

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 以释放内存,或者方法结束时将其删除?

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

4

2 回答 2

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 结构进行转换。

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

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

于 2012-09-04T01:09:35.587 回答
1

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

于 2012-09-04T01:09:12.823 回答