Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/307: Рейтинг темы: голосов - 307, средняя оценка - 4.98
Консультант Витте
 Аватар для DmitryM5
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1

Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

02.11.2014, 15:43. Показов 68022. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!Работаю с графами,и при больших значениях столкнулся с проблемой:ошибка в тесте программы на сайте такова:
C++
1
2
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Почитав,выяснил что что то с памятью не так происходит.
Вопросы таковы,как правильно сделать выделения памяти в массиве(vecor<vector<int>>),в списке смежностей (vector<list<int>>) и собственно очистить память после?
reserve лучше чем resize?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2014, 15:43
Ответы с готовыми решениями:

Ошибка 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
Есть задача: Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова...

Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
При выполнении программы, которая миксует функции в которых создаются типовые задачи, вылезает ошибка, в чем проблема?? #include...

9
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2014, 16:01
Стандартные контейнеры из STL специально разработаны так что бы вручную не выдельть и не освобождать память под них. Все это они делают сами.
0
Консультант Витте
 Аватар для DmitryM5
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
02.11.2014, 16:16  [ТС]
Цитата Сообщение от DiffEreD Посмотреть сообщение
Стандартные контейнеры из STL специально разработаны так что бы вручную не выдельть и не освобождать память под них. Все это они делают сами.
То есть по вашему если вручную задать определенный размер памяти и после ненужности ее освободить,это будет менее эффективно и более медленно,чем делать pushback к примеру и не отдать память??
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2014, 16:24
Пример кода в студию, а там будем разшуждать.
0
Консультант Витте
 Аватар для DmitryM5
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
02.11.2014, 16:41  [ТС]
Код очень большой,и задание не из легких,вот кусок когда:
C++
1
2
3
4
5
6
7
8
vector<vector<int>> g1;
....
g1.reserve(n);
for (int i = 0; i < n; ++i) 
g1[i].reserve(n);
...
g1.clear();
...
Корректно ли так?И как лучше?
0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
02.11.2014, 17:07
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Корректно ли так?
А Вы проверяли? У меня, например, не работает даже для 10 элементов.
1
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2014, 17:25
C++
1
std::vector<std::vector<int> > v(10, std::vector<int>(10));
2
Консультант Витте
 Аватар для DmitryM5
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,356
Записей в блоге: 1
02.11.2014, 17:46  [ТС]
Спасибо,тогда остался вопрос про ошибку
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Из за чего она происходит и как с ней бороться?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2014, 21:26
DmitryM5, ознакомся с функцией reserve, в любой книге, где затрагивается STL должно быть про нее написано.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
   std::vector<std::vector<int> > v;
   std::cout << "capacity = " << v.capacity() << ", size = " << v.size() << "\n";
   v.reserve(100);
   // элементов в контейнере нету!!!
   std::cout << "capacity = " << v.capacity() << ", size = " << v.size() << "\n";
 
   //v[0].reserve(n); // элемента здесь еще нет (v.size() == 0) - std::bad_alloc
   v.push_back({1,2,3,4,5});
   v.push_back({6,7,8,9,10});
   // в контейнере 2 элемента:
   std::cout << "capacity = " << v.capacity() << ", size = " << v.size() << "\n";
   v[0].reserve(100); // Ok
 
   return 0;
}
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
03.11.2014, 09:18
Цитата Сообщение от DmitryM5 Посмотреть сообщение
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Обычно это исключение бросается когда не хватает памяти для выделения. Бросать его может new/new [], аллокатор, контейнер или еще кто-нибудь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2014, 09:18
Помогаю со студенческими работами здесь

Ошибка terminate called after throwing an instance of 'std::bad_alloc' при работе с типом std::string
Добрый вечер, при работе функции возникает ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru