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
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
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
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
По сравнению с предыдущей версией, я поменял немного логику листа (в том числе макроса check_list) и метода apply, теперь при запуске с valgrind все нормально)
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Для бонуса:
fprintf / fwrite / fputc может не получиться, если на файловой системе место кончилось.
Нужно было бы как-нибудь специфицировать поведение программы в таком случае - как минимум сообщать об этом с помощью кода возврата и предоставить пользователю информацию о состоянии файла в таком случае.
зачем нужен 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