Attachments (1)

06-load-bad.vg (5.1 KB) - added by Дмитрий Свиридкин 4 years ago.

Download all attachments as: .zip

Change History (10)

comment:1 Changed 4 years ago by Egor Suvorov

Owner: changed from Дмитрий Свиридкин to Tarabonda German
Type: ожидается проверкаожидаются исправления

comment:2 Changed 4 years ago by Tarabonda German

Owner: changed from Tarabonda German to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка

Changed 4 years ago by Дмитрий Свиридкин

Attachment: 06-load-bad.vg added

comment:3 Changed 4 years ago by Дмитрий Свиридкин

==24760== Conditional jump or move depends on uninitialised value(s)
==24760==    at 0x10AECA: operator<<(std::ostream&, Matrix const&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==24760==    by 0x10AA3A: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)

bad_alloc не везде пойман

Лучше отнаследуйте исключение от кого-нибудь подходящего из std::exception и переопределите метод what()

Если у вас есть класс, объединяющий в себе регистры, то логично сделать функции над регистрами (add, mul, ...) его методами.


7

comment:4 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Tarabonda German
Type: ожидается проверкаожидаются исправления

comment:5 Changed 4 years ago by Tarabonda German

Owner: changed from Tarabonda German to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:6 Changed 4 years ago by Дмитрий Свиридкин

При неудавшемся чтении

==8014== Memcheck, a memory error detector
==8014== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==8014== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==8014== Command: lab_14/lab_14
==8014== Parent PID: 8013
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x10B6BC: Matrix::resize(int, int) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC22: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x10C007: std::vector<int, std::allocator<int> >::_M_default_append(unsigned long) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10B6C9: Matrix::resize(int, int) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC22: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x10C04C: std::vector<int, std::allocator<int> >::_M_default_append(unsigned long) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10B6C9: Matrix::resize(int, int) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC22: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x10C08B: std::vector<int, std::allocator<int> >::_M_default_append(unsigned long) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10B6C9: Matrix::resize(int, int) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC22: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x483AE10: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==8014==    by 0x10C0B0: std::vector<int, std::allocator<int> >::_M_default_append(unsigned long) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10B6C9: Matrix::resize(int, int) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC22: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x10C0CE: std::vector<int, std::allocator<int> >::_M_default_append(unsigned long) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10B6C9: Matrix::resize(int, int) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC22: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== Conditional jump or move depends on uninitialised value(s)
==8014==    at 0x10B335: operator>>(std::basic_ifstream<char, std::char_traits<char> >&, Matrix&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10BC2D: Registers::load(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Registers&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014==    by 0x10AD21: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_14/check/lab_14/lab_14)
==8014== 
==8014== 
==8014== HEAP SUMMARY:
==8014==     in use at exit: 0 bytes in 0 blocks
==8014==   total heap usage: 53 allocs, 53 frees, 117,518 bytes allocated
==8014== 
==8014== All heap blocks were freed -- no leaks are possible
==8014== 
==8014== Use --track-origins=yes to see where uninitialised values come from
==8014== For lists of detected and suppressed errors, rerun with: -s
==8014== ERROR SUMMARY: 71 errors from 7 contexts (suppressed: 0 from 0)

MatrixException::MatrixException(std::string text) : std::logic_error(text), err_txt_(text) {};

const char* MatrixException::what() const noexcept {
    return err_txt_.c_str();
}

Внутри std::logic_error уже есть текстовое поле. И преопределять метод what для него не нужно.


8

Last edited 4 years ago by Дмитрий Свиридкин (previous) (diff)

comment:7 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Tarabonda German
Type: ожидается проверкаожидаются исправления

comment:8 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Tarabonda German to Дмитрий Свиридкин

comment:9 Changed 4 years ago by Дмитрий Свиридкин

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