Вернулась ли функция struct localtime() для освобождения?
struct tm *localtime(const time_t *timep);
Я проверил man localtime
, но нет слов о том, должен ли мой долг очищать его после использования.
И на самом деле у меня много подобных сомнений в функциях, возвращающих указатель, как вы определяете его, должно быть освобождено или нет?
Ответы
Ответ 1
Эта информация должна быть на странице руководства - моя страница localtime
говорит:
Возвращаемое значение указывает на статически выделенная структура...
Статически выделенные объекты не должны передаваться в free()
, так что это ваш ответ - нет, вы не должны освобождать возвращаемое значение localtime()
.
Единственный способ рассказать в общем случае - обратиться к документации или реализации рассматриваемой функции.
Ответ 2
Вы правы, чтобы беспокоиться о функциях, возвращающих указатели на статические данные - они часто не являются потокобезопасными, и рекомендуется избегать их, даже если ваш код еще не используется в многопоточной среде.
Лучше использовать форму _r
этих функций, т.е. localtime_r()