Opened 6 years ago
Closed 6 years ago
#199 closed ожидается проверка (задача сдана)
HW#1 Sergei Zherevchuk
Reported by: | Sergei Zherevchuk | Owned by: | rutsky,grabovoy.philipp |
---|---|---|---|
Priority: | проверка | Milestone: | ha1-deadline |
Component: | HA#1 matrices | Version: | |
Keywords: | Cc: |
Description
Change History (8)
comment:1 Changed 6 years ago by
comment:2 Changed 6 years ago by
Добрый день!
Использовать exit()
в данной задаче нельзя (см. пункт 21 их "часто возникающих ошибок" из условия задачи) --- при использовании exit()
нарушается инвариант, что созданные в локальной области видимости переменные будут всегда уничтожены в нужном порядке (они не уничтожаются), перестаёт работать RAII, нарушается типичный порядок выполнения программы.
exit()
это низкоуровневый инструмент, который не стоит использовать в типичных С++ программах.
comment:3 Changed 6 years ago by
Спасибо за объяснение! Исправился, удалил везде использование exit()
.
comment:4 Changed 6 years ago by
Milestone: | ha1-milestone2 → ha1-deadline |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Замечания:
- Внесите
#include
внутрь стражи включения:
#include <cstddef> #ifndef MATRIX_HPP #define MATRIX_HPP
Если данный заголовочный файл уже включался, то нет необходимости пробовать включить
<cstddef>
.
matrices.cpp
не включает<iostream>
для использованияstd::cout
,std::cerr
.
- Нельзя включать cpp файлы (у вас в
main.cpp
):
#include <iostream> #include "matrices.cpp"
Ваша работа должна состоять из двух единиц трансляции (
main.cpp
иmatrices.cpp
) и заголовочного файлаmatrices.hpp
, описывающего интерфейс для работы с матрицами (в вашем случае это структураMatrix
и функцииread_matrix()
,print_matrix()
); реализация интерфейса должна быть вmatrices.cpp
.
comment:5 Changed 6 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
Владимир, спасибо за замечания, исправления внёс. А существует какой-то инструмент, который позволит отследить, какие заголовки не были включены явно? Пока не получается сформировать запрос к гуглу :)
comment:6 Changed 6 years ago by
Я таких инструментов не нашел, когда последний раз искал. Можно использовать прагматичный подход --- скомпилировать несколькими различными компиляторами с разными стандартными библиотеками и посмотреть, везде ли компилируется.
Но лучше посмотреть какие невстроенные типы или функции вы используете и где они определены (например, на http://cppreference.com).
comment:7 Changed 6 years ago by
Спасибо, видимо с опытом придёт.
P.S. Я нашёл только https://github.com/include-what-you-use/include-what-you-use но даже авторы пишут, что работает плохо.
Здравствуйте. Пока точно не осознал требование "Убедитесь, что при возникновении ошибок, вы корректно освобождаете всю выделенную память.".
Если я намеренно завершаю выполнение программы через
exit
, то нужно что-то освобождать?valgrind
сейчас с ключом -q на smoke тестах ничего не выводит, если же посмотреть детальный вывод по какому-нибудь из тестов, то что-то есть в блокеstill reachable
. Это о такого рода ресурсах речь идёт? Как я понял, это как раз ресурсы, которые я ещё могу потенциально освободить.