Opened 4 years ago
Closed 4 years ago
#651 closed ожидается проверка (задача сдана)
WW #11
Reported by: | Obryadina Alexandra | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | WW cpp_io | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (6)
comment:1 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Obryadina Alexandra |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Version: | → 1.0 |
---|
comment:3 Changed 4 years ago by
Owner: | changed from Obryadina Alexandra to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:4 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Obryadina Alexandra |
---|---|
Type: | ожидается проверка → ожидаются исправления |
И все-таки, зачем создавать, читать, а потом копировать? Просто создайте на куче, считайте и отдайте тот же указатель. --- только поставьте/уберите const там, где нужно.
Конструктор копий дублирует код просто конструктора -- ему можно делегировать.
Магические константы для типов лучше заменить на именованные или enum.
Единый синтаксис для дописывания в массив (cin >> array; file >> array) -- это хорошо
Память подтекает
==31269== HEAP SUMMARY: ==31269== in use at exit: 153 bytes in 11 blocks ==31269== total heap usage: 48 allocs, 37 frees, 90,611 bytes allocated ==31269== ==31269== 74 bytes in 5 blocks are definitely lost in loss record 1 of 2 ==31269== at 0x483B583: operator new[](unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==31269== by 0x10B31E: SalesManager::read_bin(std::basic_ifstream<char, std::char_traits<char> >&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== by 0x10B9F4: operator>>(std::basic_ifstream<char, std::char_traits<char> >&, Employee&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== by 0x10BFDB: operator>>(std::basic_ifstream<char, std::char_traits<char> >&, EmployeesArray&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== by 0x10A87C: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== ==31269== 79 bytes in 6 blocks are definitely lost in loss record 2 of 2 ==31269== at 0x483B583: operator new[](unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==31269== by 0x10B42D: Developer::read_bin(std::basic_ifstream<char, std::char_traits<char> >&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== by 0x10B9F4: operator>>(std::basic_ifstream<char, std::char_traits<char> >&, Employee&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== by 0x10C023: operator>>(std::basic_ifstream<char, std::char_traits<char> >&, EmployeesArray&) (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11/lab_11) ==31269== by 0x10A87C: main (in /home/dmis/DATA/WORKSPACE/cpp-labs/lab_11/check/lab_11
7.7/10
comment:5 Changed 4 years ago by
Owner: | changed from Obryadina Alexandra to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:6 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
} else { stream.setstate(std::ios::failbit); } stream >> *employee;
Тут где-то должен быть return. Иначе UB
9.5
Note: See
TracTickets for help on using
tickets.
Что-то не так с чтением из бинарного файла. Некоторые записи почему-то пропускаются.
Как-то это неправильно. Вы владение указателем передаете, а потом его внезапно убивате.
В блоках определения типа (if-else) можно не дублировать чтение. Его можно вынести.
Отступы у вас местами совсем пропали.
в манипуляторе write_c_str незачем делать копию строки.
Однобуквенные переменные в сигнатурах -- зло, а однобуквенная переменная l -- страшное зло.