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

 
 
> функция получения даты, на линуксе
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 19 2005, 08:39
Сообщение #2


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Я немного поясню свой ответ.

Цитата
Этот вопрос - это обсуждение сугубо не стиля программирования, а вопросов написания кода, свободного от скрытых ошибок, которые потом можно выявлять годами... Стиль программирования - это когда споры идут до хрипоты какой из эквивалентных фрагментов кода "правильный", а какой "ущербный":

Глупости все это, если споры идут... wink.gif Я только позволила себе заметить, что не всегда хотелось бы использовать динамическое выделение памяти (через malloc() или стек), особенно в тех случаях, когда без этого можно и обойтись. Ничего против динамического распределения не имею (в порочных связях не состою smile.gif). Очень даже понимаю его полезность и что одна из концепций любой ОС - динамическое выделение.
В старые времена (лет 10-15 назад), когда не применялись ОС в embedded системах (широко) и проблема памяти на борту была актуальна (равно, как и быстродействие ПО), тогда и переменные больше были статические (хотя и программы писались на языке Си). Со временем проблема с памятью и Мегагерцами решилась, ПО целевых систем стало тянутся к большей универсальности и воплощения принципов ОС хотя бы на концептуальном уровне (тенденции развития, как при замене Асма Си). Но знать такой вариант со статической памятью не помешает (как альтернативный). Да и не очень прозрачна линия развития embedded программирования (так как тянет это развитие и немного в сторону и без ОС: Java, MЭК на ПЛК, Labview и вся эта компания..., простите за оффтопик).

Пример с возвратом структурной единицы теперь более понятен, спасибо. В последнем примере - "стек и время все равно жалко" blush.gif (отнесем это к личному "стилю программирования" wink.gif ).
Go to the top of the page
 
+Quote Post



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

 


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


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