Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
#1

Создание исключения при динамическом выделении памяти - C++

19.04.2014, 20:59. Просмотров 351. Ответов 5
Метки нет (Все метки)

Вот код из учебника в нем мне все понятно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<cstdlib>  //exit()
#include<new>
using std::cout;using std::bad_alloc;using std::endl;
int main(){
    int *p=0;// создаем указатель
    try {
        p=new int;//выделяем память
    }
    catch(bad_alloc err){
        cout<<"Error"<<endl;
        exit(1);//Выходим при ошибке
    }
    *p=20;//используем память
    cout<<*p<<endl;
    delete p;//возвращаем память
    p=0;//обнуляем указатель
    system("pause");
    return 0;
}
Понятное дело что при запуске исключение не возникает память выделяется и все счастливы. А я хочу поиграться с исключениями, как сделать так чтобы при выделении памяти возникала ошибка?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 20:59     Создание исключения при динамическом выделении памяти
Посмотрите здесь:

Ошибка при динамическом выделении памяти - C++
Я не понимаю почему, но почему-то пример по динамическому выделению памяти, взятый с этой веб-страницы: http://cppstudio.com/post/9555/...

Ошибка при динамическом выделении памяти - C++
почему у меня возникет ошибка вот тут struct TOVAR *New = new struct TOVAR; пишит недопустимый неполный тип на struct подчеркивает...

Выравнивание при динамическом выделении памяти под массив - C++
Добрый вечер. Для того, чтобы выделить память под массив динамически и выровнять указатель по 16 байтам, в разных ОС существуют разные...

Cin.getline() не работает при динамическом выделении памяти - C++
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все нормально. #include &lt;iostream&gt; using...

Использование конструктора базового класса при динамическом выделении памяти - C++
Есть базовый класс, от него наследуются несколько классов, свой конструктор я определил в базовом классе. Далее нужно сделать так:parent...

Ошибка на динамическом выделении памяти - C++
программа ниже безупречно выполнялась под С++Builder 6.0 (консольное приложение). При переводе ее в VC6.0 (кроме сделанных исправлений -...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
19.04.2014, 21:05     Создание исключения при динамическом выделении памяти #2
Что-нибудь типа
C++
1
2
3
4
5
6
7
    char* p;
    try {
        p=new char[0x7fffffff];//выделяем память
    }catch(...)
    {
        std::cout<<"error";
    }
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
19.04.2014, 21:10  [ТС]     Создание исключения при динамическом выделении памяти #3
zss, не получается на нолик меньше все работает, на нолик больше не пропускает компилятор) у меня visual C++ 2010, экспресс
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
19.04.2014, 21:11     Создание исключения при динамическом выделении памяти #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
У меня срабатывает вот так
C++
1
2
3
char* p;
    try {
        p=new char[0x7fffffff];
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 200
19.04.2014, 21:16  [ТС]     Создание исключения при динамическом выделении памяти #5
zss, не заметил что вы подкорректировали ответ)) а теперь если можно объясните почему в данном случае выбивает ошибку?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти
Еще ссылки по теме:

Немного о динамическом выделении памяти ... - C++
объявление данных в классе: class Employee {.......... private: char *firstName; char *lasrName; }

Вопрос о динамическом выделении памяти - C++
Доброго времени суток всем. у меня вопрос к работе следующего кода: delete values; // Удаляем массив из кучи ...

Вопрос о динамическом выделении памяти для строки - C++
Как можно реализовать динамическое выделение для строки, т.е. например у меян есть указатель - char *c. Мне необходимо ввести строку с...

Ошибка при динамическом выделении двумерного массива char - C++
Ребята, спасите-помогите. Нужно выделить двумерный массив типа char для игрового поля. Выделяю вроде бы как положено, но получаю рантайм...

Ошибка при выделении памяти - C++
Когда убираю free(buf), то ошибки нету, а когда есть, то вылазит ошибка. Почему такое происходит? #include &lt;stdlib.h&gt; #include...

Ошибка при выделении памяти - C++
Вопрос: из-за чего программа может рушится? int *NRRow = new int ; int *NRow = new int ; int *NCol = new int ; //тут...


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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти #6
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
почему в данном случае выбивает ошибку
Не знаю, я взял размер максимально возможного блока.
Yandex
Объявления
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти
Ответ Создать тему
Опции темы

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