The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"получить дату (функции time, localtime ...)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"получить дату (функции time, localtime ...)" 
Сообщение от roman Искать по авторуВ закладки(??) on 13-Дек-05, 11:59  (MSK)
Приветствую.

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

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

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]

1. "получить дату (функции time, localtime ...)" 
Сообщение от Dimm Искать по авторуВ закладки(??) on 13-Дек-05, 13:47  (MSK)
а если так:
static char d[9];
и убрать malloc
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

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

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру