Opened 5 years ago

Closed 4 years ago

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

WW #5

Reported by: Brilliantov Kirill Owned by: Sokolov Viacheslav
Component: WW_c_io Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 5 years ago by Sokolov Viacheslav

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

зачем нужен big_clean ?

в read_filetxt не нужна аллокация на куче.

Вот так не стоит делать
73 int *bytes = malloc(sizeof(char) * 3);
я сходу не смог найти, разрешено это стандартом или нет, но разыменовывать bytes при этом небезопасно (будет чтение из недоступной области памяти), а зачем нужен указатель, который нельзя разыменовать?

bin_to_dec работает неверно, он читает из запрещенной области памяти. Используйте -fsanitize=address / valgrind

Работайте с char* (sizeof(char) == 1 по Стандарту).

file_name not null..

для size_t корректный спецификатор - %zu

write_filebin check_list

comment:2 Changed 5 years ago by Brilliantov Kirill

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

comment:3 Changed 5 years ago by Sokolov Viacheslav

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

Не хватает зависимостей .o файлов от .h файлов

 15     size_t *len = malloc(sizeof(size_t));
 16     assert(len != NULL);
 17     *len = 0;
 18     count(&list, len);
 19     printf("%zu\n", *len);
 20     free(len);

не нужно аллоцировать на куче, аллоцируйте на стэке

size_t len = 0;

Запуск из-под valgrind на тесте из условия

==31819== Memcheck, a memory error detector
==31819== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==31819== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==31819== Command: /home/nicesap/HSE/svn/brilliantov.kirill/lab_05/lab_05 loadtext misc/in-txt print [%d,\ %d]\ 
==31819== Parent PID: 31805
==31819== 
==31819== Conditional jump or move depends on uninitialised value(s)
==31819==    at 0x109062: has_prev (in /home/nicesap/HSE/svn/brilliantov.kirill/lab_05/lab_05)
==31819==    by 0x108E84: apply (in /home/nicesap/HSE/svn/brilliantov.kirill/lab_05/lab_05)
==31819==    by 0x109C11: show_all_points (in /home/nicesap/HSE/svn/brilliantov.kirill/lab_05/lab_05)
==31819==    by 0x109ABA: main (in /home/nicesap/HSE/svn/brilliantov.kirill/lab_05/lab_05)
==31819== 
==31819== 
==31819== HEAP SUMMARY:
==31819==     in use at exit: 552 bytes in 1 blocks
==31819==   total heap usage: 8 allocs, 7 frees, 8,856 bytes allocated
==31819== 
==31819== LEAK SUMMARY:
==31819==    definitely lost: 0 bytes in 0 blocks
==31819==    indirectly lost: 0 bytes in 0 blocks
==31819==      possibly lost: 0 bytes in 0 blocks
==31819==    still reachable: 552 bytes in 1 blocks
==31819==         suppressed: 0 bytes in 0 blocks
==31819== Reachable blocks (those to which a pointer was found) are not shown.
==31819== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==31819== 
==31819== For counts of detected and suppressed errors, rerun with: -v
==31819== Use --track-origins=yes to see where uninitialised values come from
==31819== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

comment:4 Changed 5 years ago by Brilliantov Kirill

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

По сравнению с предыдущей версией, я поменял немного логику листа (в том числе макроса check_list) и метода apply, теперь при запуске с valgrind все нормально)

comment:5 Changed 4 years ago by Sokolov Viacheslav

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

Для бонуса:
fprintf / fwrite / fputc может не получиться, если на файловой системе место кончилось.
Нужно было бы как-нибудь специфицировать поведение программы в таком случае - как минимум сообщать об этом с помощью кода возврата и предоставить пользователю информацию о состоянии файла в таком случае.

Note: See TracTickets for help on using tickets.