|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||||||||||
Оценка кода28.01.2020, 22:43. Показов 7466. Ответов 123
Метки нет (Все метки)
Здравствуйте, прошу вас всех оценить мой код , по возможности дать советы что так , а что не так и как это исправить либо в каком направлении смотреть , это моя первая попытка создать что-то не ради забавы , а чтобы использовать это в реальной жизни. Сразу скажу что еще не все доделал что хотел бы. Это декодер asn1.der , данные передаются в decode() в виде BLOB конвертированного в массив знаков.
header Кликните здесь для просмотра всего текста
cpp Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 28.01.2020, 22:43 | |
|
Ответы с готовыми решениями:
123
Оценка кода
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 02:18 [ТС] | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 09.02.2020, 02:26 | ||
std::bad_alloc?Кликните здесь для просмотра всего текста
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|
| 09.02.2020, 02:28 | |
|
1
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 02:30 [ТС] | |
|
DrOffset, аааа, даже так, я не знал об этом, я думал объект конструируется в момент его определения, а конструктор играет только роль инициализации
0
|
|
|
Неэпический
|
||
| 09.02.2020, 02:31 | ||
new SomeType, и из конструктора SomeType вылетает исключение. В данном случае вопрос не в том какое именно исключение вылетает и почему, а в том, как бы ТС обезопасил себя от подобной ситуации.
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 02:32 [ТС] | |
|
DrOffset, выходом из ситуации может быть использование контейнеров вместо массивов?
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|||
| 09.02.2020, 02:34 | |||
|
Я же написал, пример синтетический. Однако ситуация, когда в одном конструкторе динамически выделяются два ресурса вполне реальна. И в этом случае исключение не обязательно может быть об ошибке выделения памяти. Оно может прилететь из конструктора динамически создаваемого объекта. Вообще об обработке или игнорировании bad_alloc можно спорить вечно. Я бы может быть и поспорил, если бы это было хоть немного важно в контексте обсуждаемого вопроса. Стратегия "если не выделилось, значит уже все и так пропало" мне хорошо знакома, и я сам ей пользовался неоднократно. Однако, я повторюсь, здесь это не важно. Вообще. Добавлено через 19 секунд
0
|
|||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 02:36 [ТС] | |
|
DrOffset, но я так понимаю есть другой вариант лучше?
Добавлено через 1 минуту DrOffset, ну или вынести выделение памяти в отдельную функцию
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
||
| 09.02.2020, 02:37 | ||
|
Думайте о них, как о двух ресурсах. Довольно трудно написать, как вы успели заметить, такой пример, который одновременно устроил бы всех. Слишком велик соблазн сразу начать обращать внимание на частности. Поэтому давайте поговорим о концепции. Допустим у нас есть класс, в котором динамически выделяются два ресурса. Допустим эти ресурсы библиотечные и в этих библиотеках используются исключения. Код концептуально имеет представленную выше структуру. Ваши действия?
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 02:41 [ТС] | |
|
DrOffset, мои действия по поводу того как предотвратить ошибку утечки памяти?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 09.02.2020, 02:41 | |||
|
если под int ты подразумевал SomeType,я оставил спойлер.
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|||
| 09.02.2020, 02:43 | |||
|
Добавлено через 1 минуту
0
|
|||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 02:45 [ТС] | |
|
DrOffset, ну я бы убрал инициализации массива их конструктора в специально созданную для этого функцию, но это не подходит так что кроме как использования контейнеров я не знаю ничего, смарт поинтеры?
0
|
|
|
Неэпический
|
|||
| 09.02.2020, 02:47 | |||
operator new гарантирует только, что сам operator new не выбросит исключение. На конструкторы создаваемых объектов это не распространяется, поэтому, если SomeType выбросит исключение, то оно так же вылетит из new-expression.
2
|
|||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 03:19 [ТС] | |
|
DrOffset, и кстати как работает исключение bad_alloc? Как вообще работает оператор new? Он вызывает malloc и если вернулся nullptr то вылетает bad_alloc?
0
|
|
|
Неэпический
|
|
| 09.02.2020, 03:23 | |
|
1
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
|||
| 09.02.2020, 03:27 | |||
![]() Добавлено через 2 минуты Я специально оставил пример, который можно менять.
0
|
|||
|
Just Do It!
|
||
| 09.02.2020, 03:45 | ||
|
то это значит что можно и не допустить ситуацию выброса такого исключения. но вангую, что решение простое и универсальное должно быть, иначе оно бессмысленно по выше приведенному соображению. ну или исправить скорее не полностью, если без этого объекта можно обойтись.
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
|
||
| 09.02.2020, 03:49 | ||
|
В принципе если весь код сквозняком поддерживает работу без исключений, так, как это сделано в Google, то нет никакой проблемы. В реальной же ситуации могут быть нюансы.
0
|
||
| 09.02.2020, 03:49 | |
|
оценка кода Оценка стиля кода Оценка кода динамического двумерного массива
Оценка стиля написания кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|