char* asctime (const struct tm * timeptr);
char* ctime (const time_t * timer);
Я обнаружил, что многие функции внутри time.h
возвращают указатели на статические переменные, которые могут быть изменены любым последующим вызовом этих функций. Это означает, что я должен скопировать данные, которые я только что получил в результате, и это дополнительная операция, которую я должен выполнить, и это делает эти функции небезопасными.
Почему это было реализовано таким образом? Разве эти подписи не будут лучше?
void asctime (char * out, const struct tm * timeptr);
void ctime (char * out, const time_t * timer);
Мы всегда должны принимать решения во время разработки. Я просто спрашиваю, почему они решили возвращать статический указатель вместо того, чтобы принимать "переменную" в качестве параметра.
Кстати (это другой вопрос), почему они не размещают свой результат в куче? Это позволяет использовать что-либо вместо malloc или просто для эффективности?