【发布时间】:2012-08-31 09:15:44
【问题描述】:
void log(){
time_t current = time(0);
tm *ptm = localtime(¤t);
stuf...
}
只是想确定一下——我需要在方法结束时释放 tm 指针分配的内存吗?
【问题讨论】:
标签: c++ memory-management
void log(){
time_t current = time(0);
tm *ptm = localtime(¤t);
stuf...
}
只是想确定一下——我需要在方法结束时释放 tm 指针分配的内存吗?
【问题讨论】:
标签: c++ memory-management
不,你不应该释放它,结构是静态分配的。
返回值
成功时指向静态内部std::tm对象,否则为NULL。该结构可以在std::gmtime、std::localtime和std::ctime之间共享,并且可以在每次调用时被覆盖。
【讨论】:
localtime_r,这是线程安全的。你传入一个指向struct tm 结果的指针。但它不在标准 C++ 中。它是在最新版本的 C (C11) 中,为localtime_s。
不,你不应该。此结构由函数gmtime 和localtime 静态分配和共享。每次调用其中任何一个函数时,都会覆盖此结构的内容。
所以要小心结果 - 例如。立即复制它们,不要存储指针。
【讨论】: