У меня есть эта простая функция:Проблем при создании функции get_time() в C
char*
get_time()
{
char *buffer = malloc(sizeof(char)*10); /* HOW TO FREE IT ? */
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer,10,"%H:%M:%S",timeinfo);
return buffer;
}
вопрос с strftime()
который требует char*
и я не могу free(buffer);
перед возвращением его содержания. Что я мог сделать?
Макрос, где я использую функцию:
#define log_info(msg) printf("%s [INFO ] - %s\n",get_time(), (msg))
поддавки буфер в качестве аргумента get_time и использовать статический буфер в вызывающем –
Это природа C: если функция должна возвращать строку , вы должны заставить вызывающего абонента выделить место для него и передать в буфер. Другой вариант, который может работать здесь, - это вернуть структуру фиксированного размера. –
или дайте понять, что вызывающий должен освободить буфер, это тоже слишком часто. – pm100