Приветствую.Написал простую функцию (работаю под линуксом) возвращающую текущую дату, все бы ноормально но одна немаловажная проблема - утечка памяти. Потому как не могу в функци вызвать free(d), тогда нечего возвращать. Я уже совсем туплю, не знаю как обойти это :) Нужна рекомендация
char* get_date(void)
{
time_t curtime;
struct tm *loctime;
char *d;if ( !(d = malloc(9)) )
return NULL;curtime = time(NULL); /* get сurrent time */
loctime = localtime(&curtime); /* convert to localtime representation */
strftime(d, 9, "%m/%d/%y", loctime);return d;
}Заранее благодарю!
а если так:
static char d[9];
и убрать malloc
>Приветствую.
>
>Написал простую функцию (работаю под линуксом) возвращающую текущую дату, все бы
>ноормально но одна немаловажная проблема - утечка памяти. Потому как не
>могу в функци вызвать free(d), тогда нечего возвращать. Я уже совсем
>туплю, не знаю как обойти это :) Нужна рекомендация
>
>char* get_date(void)Корректнее передавать в функцию буфер и его размер -- и уже этот буфер заполнять соотвествующим значением.
char *get_date(char *s, size_t n) {
...
strftime(s, n, "%m/%d/%y", loctime);
return s;
}Использовать:
char today[9];
get_date(today, sizeof(today));