#include "mainwindow.h" #include "ui_mainwindow.h" #include <QtWidgets> #include <QResizeEvent> //绘图区域大小变化事件 #include <QDebug> #include <QThread> #include <QTimer> #include <QVector> #include <QRandomGenerator> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->plot->setOpenGl(true); ui->plot->setNoAntialiasingOnDrag(true); CreateChart(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::CreateChart() { ui->plot->addGraph(); ui->plot->graph(0)->setPen(QPen(QColor(100,149,237))); mData = ui->plot->graph(0)->data()->coreData(); ui->plot->xAxis2->setVisible(true); ui->plot->xAxis2->setTickLabels(false); ui->plot->yAxis2->setVisible(true); ui->plot->yAxis2->setTickLabels(false); connect(ui->plot->xAxis, SIGNAL(rangeChanged(QCPRange)), ui->plot->xAxis2, SLOT(setRange(QCPRange))); connect(ui->plot->yAxis, SIGNAL(rangeChanged(QCPRange)), ui->plot->yAxis2, SLOT(setRange(QCPRange))); ui->plot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom|QCP::iSelectPlottables); ui->plot->yAxis->setRange(-1.5,1.5); ui->plot->xAxis->setRange(0,50); ui->plot->yAxis->setLabel("数据"); ui->plot->xAxis->setLabel("个数"); for (int i = 0; i < 50; i++) { mXDataTol.append(i); mYDataTol.append(QRandomGenerator::global()->bounded(1.00)); } ui->plot->graph(0)->setData(mXDataTol,mYDataTol,true); ui->plot->replot(); }这是我的全部代码,系统报错:terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc请帮我修改一下代码,我不知道到底哪里出了错
时间: 2024-03-20 16:43:25 浏览: 90
moc.exe 解决moc过程中不支持处理enum包含#include头文件的语法。
5星 · 资源好评率100%
这个错误通常是由于内存不足导致的,也就是说程序尝试分配的内存超过了系统可用的内存。在你的代码中,我没有看到明显的内存泄漏或者内存溢出的问题。因此,我建议你尝试使用 Valgrind 等内存检测工具来检查你的程序是否存在内存问题。
此外,你可以尝试优化你的代码,减少内存的使用。具体来说,你可以考虑使用 QVector::reserve() 函数来预分配内存,避免频繁地动态分配和释放内存。例如:
```cpp
mXDataTol.reserve(50);
mYDataTol.reserve(50);
for (int i = 0; i < 50; i++) {
mXDataTol.append(i);
mYDataTol.append(QRandomGenerator::global()->bounded(1.00));
}
```
另外,你还可以使用 Qt 的智能指针类来管理内存,避免手动分配和释放内存。例如,你可以将 mData 声明为一个 QSharedPointer<QCPDataMap> 类型的智能指针,这样可以自动管理 mData 的内存,避免内存泄漏和悬挂指针的问题。
阅读全文