- 1
- 2
- 3
- 4
- 5
- 6
- 7
temp = (NODE *)malloc(sizeof(NODE));
if (temp == NULL)
{
Free(temp);
Free(task);
return NULL;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+129
temp = (NODE *)malloc(sizeof(NODE));
if (temp == NULL)
{
Free(temp);
Free(task);
return NULL;
}
Курсовик ночью по пьяни. Подстраховался блин.
Enelar 20.05.2011 20:43 # 0
bugmenot 20.05.2011 21:50 # −2
guest 20.05.2011 22:33 # 0
guest 20.05.2011 22:34 # −3
guest 20.05.2011 22:35 # −3
bugmenot 20.05.2011 23:40 # +3
guest 21.05.2011 12:01 # +2
guest 21.05.2011 12:11 # −2
guest 21.05.2011 12:13 # +2
guest 21.05.2011 12:14 # −2
PS: ОП ХУЙю
TarasB 21.05.2011 12:59 # +1
Govnocoder#0xFF 21.05.2011 13:04 # −1
guest 21.05.2011 13:17 # +4
И что ты — не ТарасБ.
Блять, запутался.
Govnocoder#0xFF 21.05.2011 13:21 # 0
bugmenot 22.05.2011 00:51 # +4
absolut 22.05.2011 01:47 # 0
bugmenot 22.05.2011 01:59 # 0
это - стадия отрицания собственного тарасизма, часто проявляется в виде крайней тарасофобии.
istem 23.05.2011 10:51 # +2
guest 20.05.2011 22:34 # −3
TheCalligrapher 21.05.2011 04:51 # +3
и никаких лишних ссылок на имена типов.
Enelar 21.05.2011 05:29 # −1
Такое использование sizeof не встречал и на лекциях не обьяснялось. На первый взгляд выглядит дико, особенно в ситуациях temp == NULL
TheCalligrapher 21.05.2011 07:31 # +7
То, что оно вам "выглядит дико" - плохо. Вышеприведенный вариант - хорошо известная, общепринятая и повсеместно использующаяся идиома. Очень жаль, что вас на лекциях вместо этого учат таким вещам, как приведение типа результата 'malloc' и тупое засорение кода программы именами типов.
(Приведение результата 'malloc' - это уже, кстати, со всех сторон разобранная классика говнокодирования. Казалось, что каждый пионер знает, что нельзя приводить результат 'malloc'. А нет...)
Насчет warning level 4 - недоумеваю. Приведение 'void *' к любому объектному указательному типу - фундаментальная фича языка C и любой компилятор, который на это осмелится выдавать варнинг, будет тут же высмеян с рынка под фанфары. Догадываясь, что речь идет о VS, попробовал выставить в VS2010 warning level 4. Никаких варнингов не получил. Как же вы там умудряетесь на это варнинги получать?
Enelar 21.05.2011 10:31 # −1
guest 21.05.2011 11:59 # 0
6ae12a1ab11445a0 21.05.2011 19:04 # 0
NODE *temp = malloc(sizeof(NODE));
на
что то новое *temp = malloc(sizeof(что то новое));
что на
что то новое *temp = malloc(sizeof(*temp));
все равно придется все эти места просматривать если не юзать что то типа
typedef sometype1 NODE;
typedef sometype2 NODE;
если так то тогда похрен имя типа или нет там написано
переопределил и забил
Enelar 22.05.2011 14:24 # 0
TheCalligrapher 22.05.2011 18:39 # +5
и потом возникающих с идиотскими вопросами типа "почему мой код падает, я ведь все правильно делаю".
Когда им объясняют, что "звездочка не нужна" и должно быть 'sizeof(double)', они начинают петь песни о том, что вот это
у них "всегда работало и сейчас работает, несмотря на лишнюю звездочку" (и т.п.)
Вот если бы им втолковывали сразу, что все вызовы 'malloc' должны выглядеть так
и никаких множественных звездочек и имен типов - тогда и шлака этого было бы на порядки меньше.
Enelar 23.05.2011 15:57 # −1
Ибо так приходится лезть и смотреть какого типа переменная.
А то что ноют пионеры - это их проблемы. Мы же под блондинок стандарты не подгоняем.
absolut 23.05.2011 16:23 # +1
Зачем/куда/кому лезть?
Enelar 23.05.2011 17:11 # 0
malloc(sizeof(id) + sizeof(name)+ sizeof(date) + sizeof(temp));
malloc(sizeof(int) + sizeof(char *) + sizeof(timestamp) + sizeof(long));
Пример - работа с сетью генерация разных макак.
bugmenot 23.05.2011 17:33 # 0
TheCalligrapher 23.05.2011 19:27 # +1
bugmenot 23.05.2011 19:55 # +2
Enelar 24.05.2011 03:13 # 0
ctm 23.05.2011 16:32 # −2
По всем остальным критериям на качество кода - не влияет. В принципе, допустим любой вариант.
А поменять тип (не переименовать) - проектировать систему надо нормально.
bugmenot 23.05.2011 19:56 # +3
ctm 24.05.2011 05:45 # 0
TheCalligrapher 23.05.2011 19:25 # +4
Типы используются только в декларациях. Исполняемый же код (читай: алгоритмы) должен реализовываться настолько типонезависимым образом, насколько это возможно. Вот это надо было бы втолковать вашему "учителю"... Хотя, конечно, надежды мало.
guest 25.05.2011 11:00 # −5
guest 25.05.2011 15:26 # −2
bugmenot 26.05.2011 05:29 # 0
guest 26.05.2011 11:33 # −2
guest 25.05.2011 22:59 # +1
onestep_ua 03.06.2011 00:52 # 0
double *p = malloc(n * sizeof(double));
Я безнадёжен?
TheCalligrapher 03.06.2011 01:55 # +1
Тогда уж и каст надо было оставить - для пущей очевидности
onestep_ua 03.06.2011 02:38 # 0
Другой вопрос - чем явное указание типа в sizeof хуже, чем неявное? При условии, что код уже написан и типы переменных меняться не будут.
Enelar 03.06.2011 03:53 # −1
double *p = (double *)0, (double *) malloc(n * sizeof(double));
SIGSEGV 21.05.2011 22:14 # 0
Может я чего-то не понимаю, но не должно ли это вызвать "double free or corruption" ?
absolut 22.05.2011 00:00 # +1
Enelar 22.05.2011 02:34 # +2
Блин представил себя программой. Приходит SIGSEGV и говорит. "double free or corruption".))
guest 22.05.2011 13:49 # −2
Enelar 22.05.2011 14:22 # +1
guest 22.05.2011 18:46 # −1
guest 22.05.2011 18:46 # +2
guest 23.05.2011 16:35 # −5
Lure Of Chaos 24.05.2011 17:12 # +4
guest 24.05.2011 17:19 # −2
guest 25.05.2011 22:59 # +4
danilissimus 28.05.2011 21:35 # 0
Enelar 29.05.2011 01:55 # 0
Какого типа guest?
bugmenot 29.05.2011 05:49 # 0
absolut 29.05.2011 12:05 # +1
guest 25.05.2011 10:37 # −8
пхп РУЛИТТТ
guest 25.05.2011 16:37 # −3
guest 25.05.2011 16:39 # +4
guest8 09.04.2019 10:40 # −999
guest8 09.04.2019 17:58 # −999
guest8 09.04.2019 17:58 # −999