Где и как ctime выделяет память?

Я использую функцию ctime, чтобы получить читаемое представление time_t переменная. ctime объявляется следующим образом:

char *ctime (const time_t *timer);

и вы можете видеть, что он возвращает указатель на результирующий массив символов без указания символа в аргументах. Таким образом, мне интересно, где ctime выделить буфер символов и кто его уничтожит и не выделяет память внутри функции (кроме различных mallocЭто, конечно, беспорядок.

Какие-либо предложения?

1 ответ

Решение

По ссылке, которую вы цитируете:

Массив, содержащий эту строку, статически размещается и совместно используется функциями ctime и asctime. Каждый раз, когда одна из этих функций вызывается, содержимое этого массива перезаписывается

Этот массив длится столько, сколько длится программа, и никто не должен его освобождать.

POSIX 2008 имеет ctime_r функция, которая является входящей (вы передаете в свой буфер), но она не является стандартной в C или C++.

Другие вопросы по тегам