Change History (5)

comment:1 Changed 3 years ago by Святослав Власов

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

Гарантии исключений не выполняются. Валгринд надетектил миллионы ошибок после того, как попытался загрузить матрицу из файла некорректного формата (подсказка -- проблема в init).

  1. MatrixException? лучше отнаследовать от std::logic_error, так она будет ловиться стандартным кэтчем на std::exception и там уже всё за тебя написано, ничего не придется переопределять.
  2. В конструкторе можно memset заюзать чтобы обнулить матрицу.
  3. В load, если cols не прочитается, то возможна ситуация, что у тебя в конструктор матрицы придет мусор и выделится память под матрицу размером в миллиарды столбцов. Она, конечно, уничтожится, но зачем, если можно не создавать?

8/10 пока что.

comment:2 Changed 3 years ago by Маргарита Михельсон

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

comment:3 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления
  1. В Matrix::init у тебя UB если _data вдруг не сможет аллоцироваться.
  2. Зачем в цикле делать memcpy, если у тебя память единым блоком выделяется?
  3. При попытке выделить матрицу большого размера, которая не влезает в память, происходит memory corruption. Из-за проблем в init. Помни, что если ты явно не инициализируешь переменные и указатели, то в них мусор.

8/10

comment:4 Changed 3 years ago by Маргарита Михельсон

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

comment:5 Changed 3 years ago by Святослав Власов

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

10/10

Note: See TracTickets for help on using tickets.