- 1
- 2
for(p=first; p!=NULL; p=p->next)
free(p);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+111
for(p=first; p!=NULL; p=p->next)
free(p);
Освобождаем память всех элементов списка.
tirinox 26.12.2012 01:49 # +11
bormand 26.12.2012 09:00 # +2
LispGovno 26.12.2012 09:03 # 0
Это почему это?
bormand 26.12.2012 09:28 # +1
З.Ы. но вроде бы гццшный так не делает, поэтому ты прав, не заметит...
LispGovno 26.12.2012 11:30 # 0
Dummy00001 27.12.2012 01:50 # +1
Сшный аллокатор для каждого выделенного блока уже предусматривает место для служебной информации - что-то типа размера выделенного блока. Пасквальный аллокатор был крут и никакой служебной инфы к блоку не добавлял - но требовал что бы код при выделении "помнил" сколько именно памяти было выделено.
с другой стороны, любой мемори дебаггер этот код споймает. даже мой доморощеный - который заполняет освобождаемые блоки poison pattern'ом.
TarasB 27.12.2012 09:31 # +1
Всё было ещё пиздецовее, на самом деле.
bormand 27.12.2012 09:47 # +1
Другое дело, что в паскале два несовместимых механизма назвали одним именем... в этом и жопа.
absolut 27.12.2012 10:11 # 0
такая вот перегрузка
bormand 27.12.2012 10:16 # 0
getmem и freemem без указания размера это, получается, фишка gnu pascal?
А у Борланда были только getmem и freemem с задаваемыми вручную размерами, поэтому этот код там тупо не скомпилится?
TarasB 27.12.2012 10:31 # 0
Но пиздец тут в том, что это разные функции для типизированного и нетипизированного указателей!
bormand 27.12.2012 10:41 # 0
В крестах free, delete и delete[] для неподов тоже дадут разный результат. И все нормальные программисты используют только парные функции.
guest 29.12.2012 22:47 # 0
Vindicar 29.12.2012 23:55 # +3
Такая некрофилия до добра не доводит.
bormand 30.12.2012 10:26 # +1
.
Самое плохое что может случиться - это то, что этот код будет работать без ошибок.
carsten 28.02.2013 19:13 # +2