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

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

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

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

19.04.2014, 20:59. Просмотров 303. Ответов 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++ Вопрос о динамическом выделении памяти для строки
C++ Вопрос о динамическом выделении памяти
Немного о динамическом выделении памяти ... C++
C++ Ошибка на динамическом выделении памяти
C++ Ошибка при динамическом выделении памяти
Ошибка при выделении памяти C++
Ошибка при выделении памяти C++
Выравнивание при динамическом выделении памяти под массив C++
C++ Использование конструктора базового класса при динамическом выделении памяти
Ошибка при динамическом выделении двумерного массива char C++
Cin.getline() не работает при динамическом выделении памяти C++
Ошибка при динамическом выделении памяти C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6115 / 5718 / 1849
Регистрация: 18.12.2011
Сообщений: 14,608
Завершенные тесты: 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
Сообщений: 199
19.04.2014, 21:10  [ТС]     Создание исключения при динамическом выделении памяти #3
zss, не получается на нолик меньше все работает, на нолик больше не пропускает компилятор) у меня visual C++ 2010, экспресс
zss
Модератор
Эксперт С++
 Аватар для zss
6115 / 5718 / 1849
Регистрация: 18.12.2011
Сообщений: 14,608
Завершенные тесты: 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
Сообщений: 199
19.04.2014, 21:16  [ТС]     Создание исключения при динамическом выделении памяти #5
zss, не заметил что вы подкорректировали ответ)) а теперь если можно объясните почему в данном случае выбивает ошибку?
zss
Модератор
Эксперт С++
 Аватар для zss
6115 / 5718 / 1849
Регистрация: 18.12.2011
Сообщений: 14,608
Завершенные тесты: 1
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти #6
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
почему в данном случае выбивает ошибку
Не знаю, я взял размер максимально возможного блока.
Yandex
Объявления
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти
Ответ Создать тему
Опции темы

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