Где и как ctime выделяет память?
Я использую функцию ctime, чтобы получить читаемое представление time_t
переменная. ctime
объявляется следующим образом:
char *ctime (const time_t *timer);
и вы можете видеть, что он возвращает указатель на результирующий массив символов без указания символа в аргументах. Таким образом, мне интересно, где ctime
выделить буфер символов и кто его уничтожит и не выделяет память внутри функции (кроме различных malloc
Это, конечно, беспорядок.
Какие-либо предложения?
1 ответ
По ссылке, которую вы цитируете:
Массив, содержащий эту строку, статически размещается и совместно используется функциями ctime и asctime. Каждый раз, когда одна из этих функций вызывается, содержимое этого массива перезаписывается
Этот массив длится столько, сколько длится программа, и никто не должен его освобождать.
POSIX 2008 имеет ctime_r
функция, которая является входящей (вы передаете в свой буфер), но она не является стандартной в C или C++.