Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.84/31: Рейтинг темы: голосов - 31, средняя оценка - 4.84
paramonies
0 / 0 / 0
Регистрация: 08.04.2010
Сообщений: 10
1

Обработка исключений для new

08.04.2010, 21:41. Просмотров 5598. Ответов 41
Метки нет (Все метки)

Всем привет!
Вопрос следующий. Когда функция new не может выделить память, то генериться исключение bad_alloc.
Допустим есть следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
     
       char* p;
       try
       {   for(int i = 0; i < 20; i++)
        {   p = new char[614400000U];
        cout <<  i << ":success of allocation " << endl;
        }
    }
    catch(bad_alloc)
    {    cout <<  "Allocation failure " << endl;
          abort();
    }
На каком то i шаге память закончится, сгенериться bad_alloc и мы попадем в блок catch()
А вот другой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
     
       char* p;
       try
       {   for(int i = 5; i > -5; i--)
        {   p = new char[i];
        cout <<  i << ":success of allocation " << endl;
        }
    }
    catch(bad_alloc)
    {    cout <<  "Allocation failure " << endl;
          abort();
    }
При отрицательном i, никакой обработки исключения не происходит, программа вываливается.
Вопрос: как в этом случае ведет себя new и как попасть в блок catch()?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2010, 21:41
Ответы с готовыми решениями:

Обработка исключений с пмощью структурированной обработки исключений
Есть функция, которая определенным образом работает с файлами,но при работе с...

Обработка исключений в классах для пользовательских типов
Здорова господа! Запустил токо класс String тестю и тут у меня вылетело...

Обработка исключений
Уважаемые админы. Знаю, что о помощи надо просить, когда имеются хоть какие-то...

Обработка исключений
Добрый вечер. Нужно обработать 5 исключений, я 3 обработал(и то мб неверно), а...

Обработка исключений
Нужно описать класс исключения и программу, способную генерировать и...

41
CheshireCat
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
10.04.2010, 22:52 41
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
CheshireCat прав в случае невозможности создать работоспособный объект, конструктор должен выкинуть исключение, просто нужно аккуратно следить за объектами, которые конструктор создает динамически, либо использовать для них обертки.
А техника такого действия очень несложна; она хорошо описана у уважаемого Херба Саттера в его "Решение сложных задач на C++" и "Новые сложные задачи на C++".
2
CyBOSSeR
10.04.2010, 23:04     Обработка исключений для new
  #42

Не по теме:

CheshireCat, спасибо за упоминание литературы.

0
10.04.2010, 23:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2010, 23:04
Привет! Вот еще темы с ответами:

Обработка исключений
что то я не пойму а что в плюсах нельзя разве сделать что то типа: try {...

Обработка исключений
Надо отловить ввод данных некорректного типа. Объясните пожалуйста на...

Обработка исключений
Здравствуйте, мне нужно проанализировать ведённый номер телефона методом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru