реклама на сайте
подробности

 
 
> функция получения даты, на линуксе
romez777
сообщение Dec 13 2005, 09:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую.
Написал простую функцию (работаю под линуксом) возвращающую текущую дату, все бы ноормально но одна немаловажная проблема - утечка памяти. Потому как не могу в функци вызвать free(d), тогда нечего возвращать. Я уже совсем туплю, не знаю как обойти это smile.gif Нужна рекомендация

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;
}

Заранее благодарю!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Леший
сообщение Dec 15 2005, 16:13
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 7-07-04
Из: Москва
Пользователь №: 283



Я пользуюсь такой функцией:

....

#define TIME_FORMAT "%02i:%02i:%02i %02i/%02i/%04i"

......



char *gettimestr (void)
{
static char timestr[80];
static time_t rawtime;
static struct tm *Now;

time (&rawtime);
Now = localtime (&rawtime);
snprintf (timestr, 72, TIME_FORMAT,
Now->tm_hour, Now->tm_min, Now->tm_sec, Now->tm_mday, Now->tm_mon + 1,
Now->tm_year + 1900);
return timestr;

}

2 zaratustra & Vic1:
Можно, конечно и так, но:
1. При каждом вызове надо следить за размером буфера (да и не забыть его создать сначала)
2. Рано или поздно после вызова функции про free забудешь, а ловить такие ошибки довольно занудноsad.gif

Сообщение отредактировал Леший - Dec 15 2005, 16:22
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 03:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.02025 секунд с 7
ELECTRONIX ©2004-2016