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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчет количества слов в строке http://www.cyberforum.ru/cpp-beginners/thread821570.html
Помогите пожалуйста написать программу для подсчета количества слов в строке
C++ Вычислить периметр треугольника Вычислить периметр произвольного треугольника, если известны две его стороны и угол между ними. http://www.cyberforum.ru/cpp-beginners/thread821565.html
C++ Найти стороны треугольника
Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника.
endl C++
#include <iostream> int main() { using std::cout; using std::endl; unsigned short int Width = 5, Length; Length = 10;
C++ Своя реализация strcpy - не пойму где ошибка! http://www.cyberforum.ru/cpp-beginners/thread821552.html
void copy(char *p, char *q) throw (char*) { int l2 = strlen(q); //cout<<"strlen(q)="<<strlen(q)<<" strlen(p)="<<strlen(p)<<endl; if (strlen(p)<l2) throw "exeption"; for (int i=0; i<l2 ...
C++ Разработать алгоритм работы программы (файлы, азбука "Морзе") Есть такая задача: (к ней нужно разработать: Алгоритм работы программы - блок-схему) Разработать программу которая считывает текст с файла (*.txt) выводит его в этом виде на экран, переводит этот... подробнее

Показать сообщение отдельно
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103

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

28.03.2013, 21:46. Просмотров 563. Ответов 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 - проверка нехватки памяти  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru