Opened 3 years ago

Closed 3 years ago

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

WW #2

Reported by: kravchenko.egor Owned by: Святослав Власов
Component: WW_strings Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 3 years ago by Святослав Власов

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

Корректность -- 3.5 балла
Стиль -- 1.5 балл
Замечания по корректности.
К самим функциям претензий нет, но тобой же написанные тесты у тебя падают. Из-за этого баллы за корректность пополам.
Во-первых, ты не освобождаешь выделенную память, а во-вторых пишешь куда-то вне выделенной памяти, от чего у тебя происходит порча памяти и сегфолт. Это всё нужно исправить или переписать.
В задании не было требования к написанию настолько сложных рандомных тестов, достаточно было написать несколько ассертов на основные и граничные случаи.

Если всё таки решишь исправлять, то тебе может помочь valgrind. Если его нет в системе, его можно установить командой sudo apt-get install valgrind, а затем запустить свой бинарник с его помощью: valgrind --leak-check=full ./lab02. Он поможет найти порчу памяти и утечки.

Замечания по стилю:

  1. В функции my_strcat ты объявляешь переменные char* cur_1 = s1 и char* cur_2 = s2 и затем используешь только их, а s1 и s2 не используешь. Лучше их не объявлять, а вместо них использовать s1 и s2. Так будет компактнее.

То же самое касается других функций.

  1. Оператор логического И выглядит так -- &&. Оператор & -- это оператор побитового И, он работает иначе. Для логических выражений нужно использовать оператор логического И.
  1. В функции my_strcmp последнее условие избыточно.
  1. Ворнинги с неверным использованием const. От них нужно избавиться. Если ты пока не понимаешь как работает const и из-за чего возникают ворнинги -- просто избавься от const. В задании сказано, что его можно игнорировать.
  1. Между переменной и инкрементом не должно быть пробелов, а между ключевыми словами while/if/for и открывающейся скобкой -- должен быть. Пробел между закрывающейся круглой скобкой и открывающейся фигурной тоже обычно ставится.
  1. У main не указан тип возвращаемого значения.
  1. В Makefile переменная FLAGS нужна ровно для того, чтобы упростить передачу одинаковых ключей во все объектники сразу. Ключ -g проще добавить в неё, чем приписывать каждому объектнику вручную.
  1. make выдает ошибку при повторном вызове make clean.
  1. Имена аргументов нужно сделать более осмысленными. s1 и s2 в сигнатуре функции my_strcpy совершенно неинформативны, непонятно что откуда и куда копируется. В идеале при взгляде на сигнатуру my_strcpy или my_strcat должно быть понятно как её вызывать -- какой аргумент строка-источник, а какой буфер-приемник. Хорошие кандидаты на такие имена -- это src и dst (source и destination).
Last edited 3 years ago by Святослав Власов (previous) (diff)

comment:2 Changed 3 years ago by kravchenko.egor

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

comment:3 Changed 3 years ago by Святослав Власов

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

Корректность 5/7:
Валгринд по прежнему говорит, что
definitely lost: 346,838,006 bytes in 2,627,561 blocks
Не всю память очищаешь.

Стиль -- 3/3

comment:4 Changed 3 years ago by kravchenko.egor

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

Теперь valgrind не ругается.

comment:5 Changed 3 years ago by Святослав Власов

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

10/10

Note: See TracTickets for help on using tickets.