Необходимо ли освободить память для локального времени?

void log(){
    time_t current = time(0);
    tm *ptm = localtime(&current);
        stuf...
}

Просто хочу быть уверенным - мне нужно освободить выделенную память tm в конце метода?

Ответы

Ответ 1

Нет, вы не должны его освобождать, структура статически распределена.

Проверьте документация:

Возвращаемое значение
указатель на статический внутренний std::tm объект при успешном выполнении или NULL в противном случае. Структура может быть разделена между std::gmtime, std::localtime и std::ctime и может быть перезаписана при каждом вызове.

Ответ 2

Нет, не стоит. Эта структура статически распределена и разделяется функциями gmtime и localtime. Каждый раз, когда называется одна из этих функций, содержимое этой структуры перезаписывается.

Поэтому будьте осторожны с результатами - например, скопируйте их немедленно и не храните указатель.