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

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

Восстановить пароль Регистрация
 
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
28.03.2013, 21:46     bad_alloc - проверка нехватки памяти #1
Добрый вечер. У меня такая проблема - написал конструктор копирования массива деков символов, и решил посмотреть что произойдет, если не хватит памяти. В результате программа радостно падает и появляется вот такое окошко.
вот код
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;
    }
    
}
- эффект тот же, подскажите пожалуйста, чего я не так делаю. Сразу скажу, что обработка исключений - моя больная тема.
Миниатюры
bad_alloc - проверка нехватки памяти  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 21:46     bad_alloc - проверка нехватки памяти
Посмотрите здесь:

Проверка на утечку памяти C++
C++ Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc?
bad_alloc или bad_alloc() C++
C++ Bad_alloc
C++ Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
Проверка доступности адреса памяти C++
C++ Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc выделение памяти
Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
28.03.2013, 22:57  [ТС]     bad_alloc - проверка нехватки памяти #2
Люди добрые, ну неужели ни у кого мысли нет, хотя бы натолкните. На всякий случай вот весь проект
Вложения
Тип файла: rar task3.0.rar (6.2 Кб, 2 просмотров)
gazlan
2863 / 1811 / 272
Регистрация: 27.08.2010
Сообщений: 4,908
Записей в блоге: 1
28.03.2013, 23:30     bad_alloc - проверка нехватки памяти #3
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
чего я не так делаю
Отладочная версия библиотеки НЕ выбрасывает исключения bad_alloc.

Скомпилируйте релиз и получите C++ EH Exception 0xE06D7363, внутри которого, в зависимости от версии компилятора, будет 0x19930520 или 0x19930521 или 0x19930522. Дальше смотрите уже для своей версии фрейма: Reversing Microsoft Visual C++ Part I: Exception Handling
Yandex
Объявления
28.03.2013, 23:30     bad_alloc - проверка нехватки памяти
Ответ Создать тему
Опции темы

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