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

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

Восстановить пароль Регистрация
 
ыфырф1992
25 / 25 / 12
Регистрация: 08.04.2012
Сообщений: 199
19.04.2014, 20:59     Создание исключения при динамическом выделении памяти #1
Вот код из учебника в нем мне все понятно.
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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 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
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 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
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти #6
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
почему в данном случае выбивает ошибку
Не знаю, я взял размер максимально возможного блока.
Yandex
Объявления
19.04.2014, 21:19     Создание исключения при динамическом выделении памяти
Ответ Создать тему
Опции темы

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