Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
kavars
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 7
Завершенные тесты: 1
1

Ошибка terminate called after throwing an instance of 'std::bad_alloc' при работе с типом std::string

17.03.2019, 20:03. Просмотров 760. Ответов 2

Добрый вечер, при работе функции возникает ошибка

Bash
1
2
3
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)
Возникает она только когда переменная tmpIndivi равна mutStr в строке #19

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
29
30
void mutation(std::string &mutStr, int &mutRate)
{
 
    int randomNumber = rand();
    int mutOrNot = (randomNumber % 100);
 
    std::string tmpIndivi;
 
    if(mutOrNot < mutRate)
    {
        tmpIndivi = mutStr;
        std::cout << "**********************************" << std::endl;
        std::cout << "Before mutation individ: " << mutStr << std::endl;
        int tmpSize = tmpIndivi.size();
        int randomFlag = (randomNumber % tmpSize);
        randomFlag -= 1;
        tmpIndivi[randomFlag] = randPoint();
        std::cout << "tmpIndivi: " << tmpIndivi << std::endl;
        if(tmpIndivi == mutStr)
        {
            std::cout << "fail mut" << std::endl;
            std::cout << "**********************************" << std::endl;
        } else
        {
            mutStr = tmpIndivi;
            std::cout << "After mutation individ:  " << mutStr << std::endl;
            std::cout << "**********************************" << std::endl;
        }
    }
}
C++
1
2
3
4
5
6
7
8
9
10
char randPoint() {
 
    char arrPoint[5] = {'A', 'B', 'C', 'D', 'E'};
 
    int randomNumber = rand();
    int rndPoint = (randomNumber % 5);
 
    return arrPoint[rndPoint];
 
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2019, 20:03
Ответы с готовыми решениями:

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

Ошибка 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
При выполнении программы, которая миксует функции в которых создаются типовые задачи, вылезает...

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

Ошибка: terminate called after throwing an instance of 'std::bad_alloc'
Доброго времени суток В сурсе #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt;...

2
zss
Модератор
Эксперт С++
7953 / 7138 / 4452
Регистрация: 18.12.2011
Сообщений: 18,844
Завершенные тесты: 1
17.03.2019, 20:32 2
Лучший ответ Сообщение было отмечено kavars как решение

Решение

Цитата Сообщение от kavars Посмотреть сообщение
int randomFlag = (randomNumber % tmpSize);
randomFlag -= 1;
значит randomFlag может быть равным -1
тогда
Цитата Сообщение от kavars Посмотреть сообщение
tmpIndivi[randomFlag] = randPoint();
будет ошибкой
1
kavars
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 7
Завершенные тесты: 1
17.03.2019, 20:47  [ТС] 3
zss, спасибо вам большое, долго сидел думал над ошибкой, а она оказалась очень просто решаемой
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2019, 20:47

Не понимаю из-за чего выскакивает: terminate called after throwing instance of std bad_alloc
Не понимаю из-за чего выскакивает ошибка при компиляции: terminate called after throwing instance...

Ошибка при повторном запуске: terminate called after throwing an instance of 'std::ios_base::failure'
Здравствуйте, вот этот кусок кода(дан ниже) при повторном запуске программы выдает ошибку:...

Runtime ошибка - terminate called after throwing an instance of 'std::out_of_range'
Пишу что-то вроде компилятора. Так как никакой литературы по созданию компилятора не читал в моём...


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

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

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