Необходимо ли освободить память для локального времени?
void log(){
time_t current = time(0);
tm *ptm = localtime(¤t);
stuf...
}
Просто хочу быть уверенным - мне нужно освободить выделенную память tm в конце метода?
Ответы
Ответ 1
Нет, вы не должны его освобождать, структура статически распределена.
Проверьте документация:
Возвращаемое значение
указатель на статический внутренний std::tm
объект при успешном выполнении или NULL
в противном случае. Структура может быть разделена между std::gmtime
, std::localtime
и std::ctime
и может быть перезаписана при каждом вызове.
Ответ 2
Нет, не стоит. Эта структура статически распределена и разделяется функциями gmtime
и localtime
. Каждый раз, когда называется одна из этих функций, содержимое этой структуры перезаписывается.
Поэтому будьте осторожны с результатами - например, скопируйте их немедленно и не храните указатель.