Opened 5 years ago

Closed 4 years ago

#401 closed ожидается проверка (задача сдана)

WW #5

Reported by: lopatin.mikhail Owned by: Sokolov Viacheslav
Component: WW_c_io Version:
Keywords: Cc:

Description


Change History (4)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

Запуск из-под valgrind

==3340== Memcheck, a memory error detector
==3340== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==3340== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==3340== Command: /home/nicesap/HSE/svn/lopatin.mikhail/lab_05/lab_05 loadtext misc/in-txt print [%d,\ %d]\ 
==3340== Parent PID: 3326
==3340== 
==3340== 
==3340== HEAP SUMMARY:
==3340==     in use at exit: 96 bytes in 4 blocks
==3340==   total heap usage: 7 allocs, 3 frees, 8,840 bytes allocated
==3340== 
==3340== 96 (24 direct, 72 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2
==3340==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3340==    by 0x108C69: add_point (point_list.c:45)
==3340==    by 0x10894D: main (main.c:20)
==3340== 
==3340== LEAK SUMMARY:
==3340==    definitely lost: 24 bytes in 1 blocks
==3340==    indirectly lost: 72 bytes in 3 blocks
==3340==      possibly lost: 0 bytes in 0 blocks
==3340==    still reachable: 0 bytes in 0 blocks
==3340==         suppressed: 0 bytes in 0 blocks
==3340== 
==3340== For counts of detected and suppressed errors, rerun with: -v
==3340== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

Что такое pok ?

Для промежуточной попытки нормально, но для финальной еще нужно много всего реализовать.

Просьба сделать так, чтобы point_list.c остался бы в том виде, в котором он был изначально. Это упростит проверку. Необходимые функции можно реализовывать в main.c либо в новых дополнительных файлах.

comment:2 Changed 4 years ago by lopatin.mikhail

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

comment:3 Changed 4 years ago by Sokolov Viacheslav

Что такое kor?

count реализуется так: в качестве void* data передается указатель на int, отвечающий за подсчет числа вхождений.

Глобальных состояний лучше избегать. Вот какая-то статья на эту тему ​https://habr.com/ru/company/mailru/blog/454946/ (быстро не смог найти ничего лучше), она вызывает некоторые вопросы, но кажется, что верхнеуровнево по делу написано.

В функциях нет проверок, что указатели ненулевые.

45 kor[2] = pnode->x >> 16 & 255;
Здесь используетя знание о приоритете операций. Все корректно, но лучше ставить скобки, чтобы не вызывать у читателя сомнений.

Команде print_*_file на вход стоило бы давать уже открытый файловый дескриптор. Это лучше по ряду причин:

  • логика открытия/закрытия файла остается снаружи
  • самих манипуляций с созданием дескрипторов меньше, что может влиять на производительность
  • текущая версия некорректно отработает, если уже есть файл с таким именем
  • текущая версия некорректно отработает, если точек 0

Запись на диск может не удастся (закончилось место), что по-хорошему нужно детектировать и сообщать пользователю (assert здесь - не очень хорошая мысль, потому что это не ошибочная ситуация). В задании этого не требуется, но я бы все равно хотел обратить на это внимание.

comment:4 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.