找回密码
 立即注册
收起左侧

写的串口程序,运行时占用系统内存不断增加

5
回复
8000
查看
[复制链接]
累计签到:6 天
连续签到:1 天
来源: 2017-3-2 12:38:44 显示全部楼层 |阅读模式
1Qter豆
void MainWindow:n_openButton_clicked()
{
    if(ui->openButton->text()==tr("开启"))
    {
//电流串口
       serial1 = new QSerialPort;
       //设置串口名
       serial1->setPortName("COM2");
       //打开串口
       serial1->open(QIODevice::ReadWrite);
       //设置波特率
       serial1->setBaudRate(9600);
       //设置数据位数
       serial1->setDataBits(QSerialPort::Data8);
       //设置奇偶校验
       serial1->setParity(QSerialPort::NoParity);
       //设置停止位
       serial1->setStopBits(QSerialPort::OneStop);
       //设置流控制
       serial1->setFlowControl(QSerialPort::NoFlowControl);
       //关闭设置菜单使能
      // ui->ortBox1->setEnabled(false);
         ui->openButton->setText(tr("关闭"));
      //连接信号槽
       QObject::connect(serial1, &QSerialPort::readyRead, this, &MainWindow::Read_Data);
else
    {
       //关闭串口
       serial1->clear();
       serial1->close();
        serial1->deleteLater();
void MainWindow::Read_Data()
{
   // times++;
       //读取串口数据
        QByteArray byte_data=serial->readAll();
        
       //将读取到的数据进行转化
       QString strDisplay;
       static QByteArray a;
       if(a.length()<30)
           a +=byte_data;
       else{
          a +=byte_data;
          QString str=a.toHex();
          // qDebug()<<str;

最佳答案

查看完整内容

应该是你接收数据时声明的静态局部变量的关系,收够30个字节你没清空,肯定会一直累加
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-3-2 12:38:45 显示全部楼层
本帖最后由 wdmxtk002 于 2017-3-3 08:44 编辑

应该是你接收数据时声明的静态局部变量的关系,收够30个字节你没清空,肯定会一直累加
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2017-3-8 13:11:56 显示全部楼层
请问一下,如何清空静态变量,是用clear()吗?
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2017-3-8 13:12:59 显示全部楼层
wdmxtk002 发表于 2017-3-3 08:40
应该是你接收数据时声明的静态局部变量的关系,收够30个字节你没清空,肯定会一直累加 ...


请问一下,如何清空静态变量,是用clear()吗?
加了a.clear();还是不好使?
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-3-8 14:57:01 显示全部楼层
qbytearray的clear方法只是清空,但是静态局部变量申请的内存并没有释放
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2017-3-10 09:20:35 显示全部楼层
设置为非静态变量应该可以把
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了