Opened 4 years ago
Closed 4 years ago
#774 closed ожидаются исправления (задача сдана)
WW #14
Reported by: | Tarabonda German | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | WW_exceptions | Version: | 2.0 |
Keywords: | Cc: |
Description
Attachments (1)
Change History (10)
comment:1 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Tarabonda German |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
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
comment:4 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Tarabonda German |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:5 Changed 4 years ago by
Owner: | changed from Tarabonda German to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.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
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: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
bad_alloc не везде пойман
Лучше отнаследуйте исключение от кого-нибудь подходящего из std::exception и переопределите метод what()
Если у вас есть класс, объединяющий в себе регистры, то логично сделать функции над регистрами (add, mul, ...) его методами.
7