Invalid parameter passed to C runtime function. std::bad_alloc
Здравствуйте, у меня проблема. Уже 2 дня бьюсь. Не знаю как решить. В приложенном файле ошибки. У меня есть 2 файла, по нажатию кнопки я проверяю, какие галочки нажаты( цифры галочек добавляю в вектор), потом беру данные из файлов в зависимости от галочек( через вектор usedChannels). Где-то ошибка( Кода много, не знаю понятно ли, что вообще происходит. Это dataread.cpp
#include <iostream> #include <fstream> #include <stdlib.h> #include <vector> #include <iterator> #include <QVector> #include <stdio.h> #include <typeinfo> using namespace std; typedef struct { unsigned int adc_channels; unsigned int adc_count; unsigned char adc_freq; unsigned short adc_buff[100000]; }TADC_Data; void DataRead(QVector <QVector<double>> &vector_container, QVector <int> &usedChannels) { TADC_Data ADC_Data_File; FILE *adc_data_file; QVector <double> vectorOfData; QVector<int>::iterator itv; for (itv = usedChannels.begin(); itv != usedChannels.end(); itv++){ adc_data_file = fopen(("Channel_" + to_string(*itv) + ".dat").c_str(), "rb"); //adc_data_file = fopen("Channel_1.dat", "rb"); if (adc_data_file == NULL) { cout << "Error" << endl; } else { cout << "Opened" << endl; } fread(&ADC_Data_File, sizeof(ADC_Data_File), 1, adc_data_file); fclose(adc_data_file); for(unsigned int j=0;j < ADC_Data_File.adc_count;j++){ double temp; temp = ADC_Data_File.adc_buff[j]; temp-= 8192; temp = ( (temp * 10) / 8192); vectorOfData.insert(vectorOfData.end(), temp); vector_container.append(vectorOfData); } vectorOfData.clear(); } }Это MainWindow.cpp (не весь)
void MainWindow::on_showButton_clicked() { check_Channels(); DataRead(vector_container, usedChannels); //QVector<int>::iterator itv; QVector <QVector<double>>::iterator itv; int i = 1; for (itv = vector_container.begin(); itv != vector_container.end(); itv++){ ui->customPlot->addGraph(); ui->customPlot->graph(i)->setData(discrets_vector, *itv); i++; } // create graph and assign data to it: /*for(int i = 0; i < usedChannels.size(); i++){ ui->customPlot->addGraph(); //cout << discrets_vector.size(); //cout << vector_container[i].size(); ui->customPlot->graph(i)->setData(discrets_vector, vector_container[i]); }*/ vector_container.clear(); //ui->customPlot->addGraph(); //ui->customPlot->graph(0)->setData(discrets_vector, vector_container.first()); // give the axes some labels: // set axes ranges, so we see all data: QPen graphPen; graphPen.setColor(QColor(125,200,0)); graphPen.setWidthF(rand()/(double)RAND_MAX*2+1); ui->customPlot->graph(0)->setPen(graphPen); ui->customPlot->replot(); } void MainWindow::check_Channels() { if (ui->checkBox_1->isChecked()){ usedChannels.push_back(1); } if (ui->checkBox_2->isChecked()){ usedChannels.push_back(2); } }
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <qcustomplot.h> #include <bitset> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_showButton_clicked(); void mousePress(); void mouseWheel(); void on_actionHelp_triggered(); void axisLabelDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part); void vector_initialization(uint32_t size_of_vector_discerts); void check_Channels(); private: Ui::MainWindow *ui; uint32_t size_of_vector_discerts = 100000;// size of vector that contains discrets QVector <double> data_vector; QVector <double> discrets_vector; QVector <QVector<double>> vector_container; QVector <int> usedChannels; }; #endif // MAINWINDOW_H
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
AD
- Akiv Doros
- 11 ноября 2024 г. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50баллов,
- Очки рейтинга-4
m
- molni99
- 26 октября 2024 г. 1:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
m
- molni99
- 26 октября 2024 г. 1:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20баллов,
- Очки рейтинга-10
Последние комментарии
Django - Урок 055. Как написать функционал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
QML - Урок 035. Использование перечислений в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
Алгоритм сортировки кучей The role of raloxifene in preventing breast cancer priligy precio
PyQt5 - Урок 006. Работа с QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
Сейчас обсуждают на форуме
добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
IscanderChe31 октября 2024 г. 15:43
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Реализация навигации по разделам Спасибо Евгений!
Игорь Максимов3 октября 2024 г. 4:05
Добрый день.
Вы не могли бы запустить программу под отладчиком (F5) и повторить всё, что сделали. У вас выбрасывается исключение где-то, а такую ошибку трудно понять просто посмотрев код. Когда сработаёт исключение, ваше приложение переключится в Qt Creator и будет показан файл и строка, в которой произошло исключение. Скорее всего будет показан файл из библиотеки, но ниже под содержимым файла будет список вызовов функций (обычно выводятся последние 20). Так вот, в этом списке верхней строкой будет файл где изначально произошло исключение, посмотрите список внимательно, там же будут и ваши файлы из вашего проекта, кликните по первой попавшейся строке, которая относится непосредственно к тем файлам, которые создали вы. И тогда вас переключит на строку, где произошло исключение.
После этого сообщите этот файл и эту строку мне. Так будет эффективнее понять, что не так. Возможно, Вы и сами сразу разберётесь, что к чему.
По нажатию F5(Значок play с жуком). Происходит отладка он показывает те же ошибки, запускает приложение и оно вылетает(
Ну что ж. Скудные данные получаются.
А вы вообще очищаете где-нибудь usedChannels ? Я этого не заметил нигде.
И будет ли работать, если закомментировать следующий код?
Я закомментировал этот кусок и другой(там где цвет графика, поскольку данных нет то и цвет графика нельзя сделать) и все работает, ну то есть ничего не происходит, но ошибок вроде нет. Похоже ошибка в этом куске, но я же вроде все правильно делаю. Перепробовал push_back, append.
Я не очищаю (кстати надо), но вряд ли ошибка в этом.
Ошибка, не ошибка. надо очищать. Пару десятков итераций и приложение будет виснуть.
push_back и append - это одно и тоже. просто push_back для совместимости с STL, но это не ваш случай.
Почему именно insert ? почему не append ?
Да, я тут же исправил.