2 / 1 / 1
Регистрация: 22.12.2019
Сообщений: 93
|
|
1 | |
Генерация Bad_alloc и состояние программы18.06.2020, 11:08. Показов 953. Ответов 9
Здравствуйте! Возник вопрос, связанный с генерацией bad_alloc. Меня интересует, что будет, если при выделение памяти под массив, например, мы схватываем ошибку выделения памяти. Как будет меняться состояние объекта с точки зрения обеспечения стогой гарантии безопасности? Что будет записано в указатель ?
0
|
18.06.2020, 11:08 | |
Ответы с готовыми решениями:
9
Генерация исключения bad_alloc в new Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc выделение памяти Что за ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
18.06.2020, 11:12 | 2 |
1
|
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
|
|
18.06.2020, 11:14 | 3 |
Какого объекта?
В какой указатель? Вы же сами сказали - выброшено исключение bad_alloc . То есть ни до какого "записывания в указатель" дело не дошло вообще.
1
|
2 / 1 / 1
Регистрация: 22.12.2019
Сообщений: 93
|
|
18.06.2020, 11:15 [ТС] | 4 |
я имел в виду то такое
int* temp = new int[100000]; size_++; конечно, все это в блоке try
0
|
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
|
|
18.06.2020, 11:17 | 5 |
И?
Если при выделении памяти будет выброшено исключение, то управление перейдет в обработчик исключения. Где уже не будет никакого указателя. О каком "указателе" вы ведете речь? О каком "объекте"?
1
|
2 / 1 / 1
Регистрация: 22.12.2019
Сообщений: 93
|
|
18.06.2020, 11:59 [ТС] | 6 |
речь шла о том, что будет записано в указатель temp и поменяется ли в результате такого случая его значения. Из ваших ответов я понял, что значение не изменится и гарантии безопасности будут соблюдены, я верно вас понял?
0
|
18841 / 9840 / 2408
Регистрация: 30.01.2014
Сообщений: 17,282
|
|
18.06.2020, 12:08 | 7 |
Ничего.
Указатель temp даже создан не будет. Т.е. говорить о каком-либо значении бессмысленно.
1
|
2 / 1 / 1
Регистрация: 22.12.2019
Сообщений: 93
|
|
18.06.2020, 12:13 [ТС] | 8 |
Хорошо, понял вас
Добавлено через 26 секунд Всех, кто помог, благодарю за ответы
0
|
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
|
|
18.06.2020, 13:37 | 9 |
В указатель
temp ничего записано не будет. Но сам вопрос о значении указателя temp бессмыслен, ибо к моменту начала выполнения обработчика исключения этот указателя уже перестанет существовать. Он же объявлен у вас локально в try-блоке. Нет никакого смысла говорить о значении несуществующего указателя.Если вы имели на уме какой-то другой пример - то приводите его. Пока что мы вели речь именно о том примере, который вы привели выше.
0
|
18.06.2020, 13:53 | 10 | |||||
Что бы говорить вообще о указателе он должен быть объявлен вне блока try catch
1
|
18.06.2020, 13:53 | |
18.06.2020, 13:53 | |
Помогаю со студенческими работами здесь
10
Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc bad_alloc или bad_alloc() Автоматическая генерация кода программы на основе программы на другом языке программирования Как сохранить состояние программы Возврат программы в начальное состояние Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |