Opened 3 years ago
Closed 3 years ago
#155 closed ожидается проверка (задача сдана)
intrusive_list (lab_04) Korkin
Reported by: | korkin.igor | Owned by: | Антон Филатов |
---|---|---|---|
Component: | WW_intrusive_list | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (9)
comment:1 Changed 3 years ago by
comment:2 Changed 3 years ago by
Так, сейчас вроде уже протечек памяти меньше, но они все равно есть, и я до сих пор не знаю, что с ними вообще надо делать.
comment:3 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
слушайте, ну у вас не просто течёт память, а прям сегфолт бывает.
То ли если после rm сделать add, то ли если сделать rma, а потом add
Валгринд вообще очень много на что ругается. я уж не буду сюда полотно из 75 его ошибок копипастить. Но если вам нужно - говорите, я пришлю.
Часть ошибок точно решится, если вы выделите память под command в main, а то вы считываете 239 символов в переменную, под которую память не выделена.
Помимо этого в конце main нету удаления всего выделенного места. А если пользователь не ввёл rma, кто же будет память чистить?
По формальным признакам это 0/8 за корректность
Стиль:
- make при повторном вызове вместо того, чтобы сказать, что nothing to be done, падает с ошибкой - нехорошо
- container_of место скорее в main.c, правда? его же только там используют
- а для чего вы в add_node передаёте intrusive_node* * to_add? вы собираетесь внутри этой функции перенаправлять этот указатель? А почему вы его потом конвертируете к intrusive_node* ? Я чёт не понимаю, почему это должно работать
- в clist.h нужны все эти инклюды? или кто-то из них нужен только в main?
2/4 за стиль
Итого 2/12
comment:4 Changed 3 years ago by
Так. Окзалалось, что offsetof выдавал какую-то фигню, поэтому я пока написал костыль, но сейчас оно хотя бы работает. Можете пожалуйста проверить на утечки теперышний код?
P.S.: собственно intrusive_node* * пришлось писать из-за offserof'а, который не работал так, как от него требуется. Сейчас я его вроде убрал.
comment:5 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:6 Changed 3 years ago by
Да, сейчас утечек нет тесты проходят верно, но полностью проверку я делать сейчас не буду. Пофиксите все мои замечания к субботе
comment:7 Changed 3 years ago by
глобальная N = (void*)to_add->node - (void*)to_add; - вот это зло, не надо так. надеюсь, вы его тоже уберёте
comment:8 Changed 3 years ago by
Version: | 1.0 → 2.0 |
---|
comment:9 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Тесты все проходят 8/8
Стиль:
- теперь make что-то пытается делать при повторном вызове. Да, всего одну строчку, но всё равно, можно сделать так, чтобы этого не было
3,5/4
Итого: 11,5/12
Сейчас немного исправил программу, сделав её до конца рабочей. Надеюсь, это не слишком критично, что после дедлайна.
Правда, память сейчас течет, как крыша Запарожца во время ливня, но я ничего не смог с этим сделать, потому что когда я делаю free(...), то мне каждый раз выкидывает Segmentation fault (core dumped), хотя вроде дальше то, что освобождалось, не используется (а иногда segfault вылетал прям во время free(...) ненулевого указателя, и тут я уже вообще не знаю, что делать). Есть какие-то подсказки, как такое вообще можно дебажить? А то что-то совсем прям грустно.