Opened 4 years ago
Closed 4 years ago
#780 closed ожидается проверка (задача сдана)
WW #14
Reported by: | savrasov.mikhail | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | WW_exceptions | Version: | 3.0 |
Keywords: | Cc: |
Description
Attachments (1)
Change History (7)
Changed 4 years ago by
Attachment: | 06-load-bad.vg added |
---|
comment:1 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to savrasov.mikhail |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Owner: | changed from savrasov.mikhail to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
Fixed
comment:3 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to savrasov.mikhail |
---|
При неудавшемся чтении
==9084== Memcheck, a memory error detector ==9084== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==9084== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==9084== Command: lab_14/lab_14 ==9084== Parent PID: 9083 ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x10CAAC: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x10CACB: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x483AE10: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10CAE2: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x484193F: memset (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10CAFD: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x484198A: memset (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10CAFD: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x48419AA: memset (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10CAFD: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x48419C9: memset (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10CAFD: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x10D1D4: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x10D1E7: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x483AE10: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D1F4: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x10D21C: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x48419FA: memmove (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D239: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x4841BA1: memmove (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D239: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x4841A55: memmove (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D239: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x4841ABC: memmove (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D239: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x4841AE4: memmove (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D239: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x4841AFD: memmove (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==9084== by 0x10D239: std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >::_M_fill_assign(unsigned long, std::vector<int, std::allocator<int> > const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10CB1E: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== Conditional jump or move depends on uninitialised value(s) ==9084== at 0x10CB53: Matrix::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== by 0x10ADEF: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14) ==9084== ==9084== ==9084== HEAP SUMMARY: ==9084== in use at exit: 0 bytes in 0 blocks ==9084== total heap usage: 46 allocs, 46 frees, 117,116 bytes allocated ==9084== ==9084== All heap blocks were freed -- no leaks are possible ==9084== ==9084== Use --track-origins=yes to see where uninitialised values come from ==9084== For lists of detected and suppressed errors, rerun with: -s ==9084== ERROR SUMMARY: 108 errors from 18 contexts (suppressed: 0 from 0)
Исключения должны вылетать за пределы операций над матрицами. Иначе вы не как не уведомляете вызывающий код об ошибке.
Операторы, не меняющие объект, определенные как методы, должны быть помечены const.
7
comment:4 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:5 Changed 4 years ago by
Owner: | changed from savrasov.mikhail to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:6 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
void get(int32_t x, int32_t y);
А почему void?!?
----------
9.5
Note: See
TracTickets for help on using
tickets.
ошибок памяти так много, что valgrind упал
Если чтение упадет, исходная матрица сломается. Так не должно быть.
под gcc санитайзеры не дружат с исключениями -- используйте valgrind
const? лишнее копирование?
Используйте нижнее подчеркивание в конце имен, а не в начале.
Наследование должно быть публичным. what стоит пометить override.
bad_alloc можно ловить на более верхнем уровне, а не в каждой функции.
в функцию get_reg стоит передаваить поток, из которого читать.
6