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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.63
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 270
#1

Ошибка std::bad_alloc - C++

24.09.2013, 22:17. Просмотров 7371. Ответов 7
Метки нет (Все метки)

Помогите.

Если запускать программу с number = 6, то всё работает, а вот если запустить программу, поменяв 6 на любое другое число, то программа завершается ошибкой std::bad_alloc

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
#include <iostream>
#include <vector>
using namespace std;
 
 
int main()
{
 
    int number = 6, in, count = 0;
    vector <int> fl;
    while (number >= 2)
    {
        count++;
        in = number / 2;
        for (int i = 0; i < count; i++)
        {
            i = number - (in * 2);
            fl.push_back(i);
        }
        number = in;
    }
    for(int i = 0; i < count; i++)
        cout << fl[i];
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 22:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка std::bad_alloc (C++):

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

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

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

Ошибка std::bad_alloc - C++
Здравствуйте! Уже который день борюсь с этой ошибкой, но не могу понять, в чем проблема. После возникновения ошибки ругается на...

Кратчайший путь до какой-то координаты. Ошибка std::bad_alloc - C++
На шахматной доске NxN в клетке (x1, y1) стоит голодный шахматный конь. Он хочет попасть в клетку (x2, y2), где растет вкусная шахматная...

Ошибка при выполнении функции (std::bad_alloc at memory location) - C++
При выполнении функции выскакивает ошибка: Unhandled exception at 0x77b815de in SII_V1_Lab2.exe: Microsoft C++ exception: std::bad_alloc...

7
Shadow121
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 42
24.09.2013, 22:26 #2
Я только что запускал у меня все работает. При любых значениях.
0
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 270
24.09.2013, 22:31  [ТС] #3
Shadow121, а вы в чём программируете?
Просто у меня Code::Blocks и там не работает программа
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
24.09.2013, 22:33 #4
std::bad_alloc - это исключение. Бросается если произошла ошибка выделения памяти. Предполагаю что ты слишком много элементов хочешь запихнуть в вектор.
0
Croessmah
Пришел
Эксперт CЭксперт С++
13740 / 7820 / 892
Регистрация: 27.09.2012
Сообщений: 19,217
Записей в блоге: 3
Завершенные тесты: 1
24.09.2013, 22:35 #5
C++
1
2
            i = number - (in * 2);
            fl.push_back(i);
может так:
C++
1
fl.push_back(number - (in * 2));
2
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 270
24.09.2013, 22:39  [ТС] #6
castaway, ну там вообще страная тема
если number = 2; 3; 6 - работает
если number = 4; 5; 10 - не работает

я не думаю что компютору сложнее выжелить память для 4 элементов, нежели для 6-ти

Добавлено через 2 минуты
Croessmah, опа, спасибо, заработало, интересный нюанс, что так как у вас - работает, а так как у меня - не работает
0
zedusan
1 / 1 / 0
Регистрация: 21.06.2017
Сообщений: 36
15.08.2017, 21:29 #7
Croessmah,
Цитата Сообщение от Croessmah Посмотреть сообщение
i = number - (in * 2);
fl.push_back(i);
может так:
fl.push_back(number - (in * 2));
Поясни, плиз, ход своих мыслей, в чем отличие данных записей? Или это просто какие-то особенности (заморочки) компиляторов?
0
hoggy
6797 / 2983 / 514
Регистрация: 15.11.2014
Сообщений: 6,741
Завершенные тесты: 1
15.08.2017, 21:41 #8
Цитата Сообщение от zedusan Посмотреть сообщение
в чем отличие данных записей?
Цитата Сообщение от zedusan Посмотреть сообщение
i = number - (in * 2);
модифицируется счетчик цикла.
бесконечный цикл получается.

Цитата Сообщение от zedusan Посмотреть сообщение
Или это просто какие-то особенности (заморочки) компиляторов?
это просто особенности (заморочки) прокладки между стулом и монитором.
1
15.08.2017, 21:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2017, 21:41
Привет! Вот еще темы с ответами:

Ошибка при написании класса: Unhandled exception std::bad_alloc at memory location - C++
ПИшу свой клас Var, проблема в следующем из-за строчки first = first+1; вылетает ошибка Unhandled exception at at 0x760FB727 in...

std::bad_alloc - C++
Сразу оговорюсь, что пришёл в C++ из JavaScript, поэтому прошу сильно не бить. Суть в следующем: у нас есть 2 массива из bool (точнее 2...

std::bad_alloc - C++
Здравствуйте. Пишу программу на Code::Blocks. Когда компилирую и запускаю в среде, то программа выполняется нормально. Когда запускаю...

Std::bad_alloc - C++
Возникает утечка. Пробовал очищать память в самых разный местах, но решить проблему не получается. for (int k = 0; k &lt; 22050; k++) { ...


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

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

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