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

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

Войти
Регистрация
Восстановить пароль
 
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
#1

bad_alloc - проверка нехватки памяти - C++

28.03.2013, 21:46. Просмотров 534. Ответов 2
Метки нет (Все метки)

Добрый вечер. У меня такая проблема - написал конструктор копирования массива деков символов, и решил посмотреть что произойдет, если не хватит памяти. В результате программа радостно падает и появляется вот такое окошко.
вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DA::DA(const DA & D1) 
{
    D = 0;
    try
    {
        std::cout << D1.N;
        N = D1.N;
        D = new deq[D1.N];
        for (int i = 0; i < D1.N; i++)
        {
            if (i > 2)
            {
                throw std::bad_alloc();
            }
 
            D[i] = D1[i];           
        }
    }
    catch(std::bad_alloc e)
    {
        std::cerr << e.what() << std::endl;             
        delete[] D;
    }
    
}
пробовал вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
DA::DA(const DA & D1) 
{
    D = 0;
    try
    {
        std::cout << D1.N;
        N = D1.N;
        D = new deq[D1.N];
        if (D1.N > 2)
            {
                throw std::bad_alloc();
            }
        for (int i = 0; i < D1.N; i++)
        {
            D[i] = D1[i];           
        }
    }
    catch(std::bad_alloc e)
    {
        //std::cout << i << std::endl;
        std::cerr << e.what() << std::endl;     
        
        //N = i;
        //std ::cout << N << std::endl;
        delete[] D;
    }
    
}
- эффект тот же, подскажите пожалуйста, чего я не так делаю. Сразу скажу, что обработка исключений - моя больная тема.
0
Миниатюры
bad_alloc - проверка нехватки памяти  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 21:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос bad_alloc - проверка нехватки памяти (C++):

Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc выделение памяти - C++
Уважаемые форумчане! Работаю над программой обработки WAV файлов, но возникла такая проблема: при чтении файла возникает ошибка ...

Обработка исключений: проверить выделения памяти, используя исключение bad_alloc - C++
Здравствуйте. Передо мной стоит задача: &quot;Проверьте выделения памяти новым способом, используя исключение bad_alloc.&quot; Кто-то знает, что...

Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? - C++
По УМОЛЧАНИЮ при динамическом выделении, если не хватает памяти, возвращается NULL или bad_alloc? Так и не нашел конкретного ответа....

Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc - C++
Добрый день!Работаю с графами,и при больших значениях столкнулся с проблемой:ошибка в тесте программы на сайте такова: terminate called...

Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc - C++
Есть задача: Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова &quot;ноль&quot;,...

bad_alloc или bad_alloc() - C++
Здравия желаю!:) Хотелось бы узнать, какая разница между throw bad_alloc; и throw bad_alloc();. В 1м случае, как я понимаю,...

2
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
28.03.2013, 22:57  [ТС] #2
Люди добрые, ну неужели ни у кого мысли нет, хотя бы натолкните. На всякий случай вот весь проект
0
Вложения
Тип файла: rar task3.0.rar (6.2 Кб, 2 просмотров)
gazlan
3132 / 1908 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
28.03.2013, 23:30 #3
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
чего я не так делаю
Отладочная версия библиотеки НЕ выбрасывает исключения bad_alloc.

Скомпилируйте релиз и получите C++ EH Exception 0xE06D7363, внутри которого, в зависимости от версии компилятора, будет 0x19930520 или 0x19930521 или 0x19930522. Дальше смотрите уже для своей версии фрейма: Reversing Microsoft Visual C++ Part I: Exception Handling
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 23:30
Привет! Вот еще темы с ответами:

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

Проверка на утечку памяти - C++
Всем доброго времени суток. Сразу оговорюсь, я не профессионал, программирование - моё хобби, которое помогает мне по основному...

Проверка доступности адреса памяти - C++
Как проверить можно ли прочитать по указанному адресу , что либо ?

Проверка освобождения памяти (new, delete) - C++
Всем привет. Программы помаленьку становятся сложнее. Появляются самодельные контейнеры внутри других самодельных контейнеров внутри...


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

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

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