URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4935
[ Назад ]

Исходное сообщение
"получить дату (функции time, localtime ...)"

Отправлено roman , 13-Дек-05 11:59 
Приветствую.

Написал простую функцию (работаю под линуксом) возвращающую текущую дату,  все бы ноормально но одна немаловажная проблема - утечка памяти. Потому как не могу в функци вызвать 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;
}

Заранее благодарю!


Содержание

Сообщения в этом обсуждении
"получить дату (функции time, localtime ...)"
Отправлено Dimm , 13-Дек-05 13:47 
а если так:
static char d[9];
и убрать malloc

"получить дату (функции time, localtime ...)"
Отправлено chip , 13-Дек-05 14:36 
>Приветствую.
>
>Написал простую функцию (работаю под линуксом) возвращающую текущую дату,  все бы
>ноормально но одна немаловажная проблема - утечка памяти. Потому как не
>могу в функци вызвать 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));