我写了以下方法:
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以释放内存,否则当方法结束时它将被删除?
如果有必要删除它,我该怎么做?
答案 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
。