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: ожидается проверкаожидаются исправления

У вас список в неправильную сторону на экран выводится. Я об этом не сказал отдельно на паре, но посмотрите внимательнее пример использования на гите, там видно, что после
add 1 2
add 3 6
add 4 6
add 1 2
print
выведется
(1 2) (4 6) (3 6) (1 2)
Из-за этого половина тестов (которые не заканчиваются состоянием, когда осталась одна или ноль точек) падает. К тому же уберите, пожалуйста, пробелы из конца строки
4/8 за корректность

Стиль:

  • container_of лучше бы поместить в main.c - он же только там используется
  • а в чём смысл вот этой строки в add_node node->next = node; node->prev = node;? все куски node всё равно ведь перезапишутся
  • настоятельно рекомендую пользоваться typedef для структур, чтобы ключевое слово struct за собой не волочить
  • зачем char query[256] - глобальный?
  • нет return в main

1,5/4 за стиль

Итого 5,5/12

comment:2 Changed 3 years ago by novozhilov.aleksandr

сontainer_of лучше бы поместить в main.c - он же только там используется
Для использования интрузивного списка в main.c может быть полезен следующий макрос (стоит добавить в clist.h)

comment:3 Changed 3 years ago by novozhilov.aleksandr

Version: 1.0

comment:4 Changed 3 years ago by novozhilov.aleksandr

Type: ожидаются исправленияожидается проверка

comment:5 Changed 3 years ago by Антон Филатов

Resolution: задача сдана
Status: assignedclosed

Всё проходит, кроме одного теста
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.