Opened 3 years ago
Closed 3 years ago
#160 closed ожидается проверка (задача сдана)
Lab04 Novozhilov Aleksandr
Reported by: | novozhilov.aleksandr | Owned by: | Антон Филатов |
---|---|---|---|
Component: | WW_intrusive_list | Version: | 1.0 |
Keywords: | Cc: |
Description
Извините, чуть-чуть опоздал.
Change History (5)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 3 years ago by
сontainer_of лучше бы поместить в main.c - он же только там используется
Для использования интрузивного списка в main.c может быть полезен следующий макрос (стоит добавить в clist.h)
comment:3 Changed 3 years ago by
Version: | → 1.0 |
---|
comment:4 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:5 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Всё проходит, кроме одного теста
add 1 1
rm 1 1
len
print
exit
На этом тесте очень ругается валгринд
==2511== error calling PR_SET_PTRACER, vgdb might block ==2511== Invalid read of size 8 ==2511== at 0x108ACB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d288 is 8 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid read of size 4 ==2511== at 0x108AD6: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d280 is 0 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid read of size 4 ==2511== at 0x108AE1: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d284 is 4 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid read of size 8 ==2511== at 0x10899F: remove_node (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108AFB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d290 is 16 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid read of size 8 ==2511== at 0x1089AB: remove_node (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108AFB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d290 is 16 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid read of size 8 ==2511== at 0x1089B3: remove_node (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108AFB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d288 is 8 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid write of size 8 ==2511== at 0x1089B6: remove_node (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108AFB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d288 is 8 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid read of size 8 ==2511== at 0x1089BD: remove_node (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108AFB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d288 is 8 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid write of size 8 ==2511== at 0x1089C4: remove_node (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108AFB: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d290 is 16 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== Invalid free() / delete / delete[] / realloc() ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Address 0x522d280 is 0 bytes inside a block of size 24 free'd ==2511== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108B07: remove_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108DCE: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== Block was alloc'd at ==2511== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==2511== by 0x108A56: add_point (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== by 0x108D01: main (in /home/wwu/cpp20/cpp20/novozhilov.aleksandr/lab_04/lab_04) ==2511== ==2511== ==2511== HEAP SUMMARY: ==2511== in use at exit: 0 bytes in 0 blocks ==2511== total heap usage: 3 allocs, 4 frees, 1,048 bytes allocated ==2511== ==2511== All heap blocks were freed -- no leaks are possible
7/8 за корректность
По стилю осталось замечание
а в чём смысл вот этой строки в add_node node->next = node; node->prev = node;? все куски node всё равно ведь перезапишутся
3.5/4
Итого: 10.5/12
Note: See
TracTickets for help on using
tickets.
У вас список в неправильную сторону на экран выводится. Я об этом не сказал отдельно на паре, но посмотрите внимательнее пример использования на гите, там видно, что после
add 1 2
add 3 6
add 4 6
add 1 2
print
выведется
(1 2) (4 6) (3 6) (1 2)
Из-за этого половина тестов (которые не заканчиваются состоянием, когда осталась одна или ноль точек) падает. К тому же уберите, пожалуйста, пробелы из конца строки
4/8 за корректность
Стиль:
1,5/4 за стиль
Итого 5,5/12