bran_lee:AutoControlPacket到底是什么时候创建的?是全局的还是局部的?信号传的是引用?传到另一个线程后AutoControlPacket会不会被析构?
 (2016-12-07 11:51) 
 
AutoControlPacket是ControlThread的私有变量,槽函数是这样
void demo::semdControlPacket(Packet packet)
{
    Packet resu = packet;
    emit sendcontroloutput(resu);
}
导一下emit sendcontroloutput(resu)再把数据传到Qtcpthread线程;用于控制;
奇怪的是今天我把上面代码这步分删了
          //发送自动控制命令包
                if (!sendControlPacket.hexString.isEmpty())
                {
                    Sendpacket.name = sendControlPacket.name;
                    Sendpacket.hexString = sendControlPacket.hexString;
                    clientConnection->write(Sendpacket.getByteArray());
                    clientConnection->waitForBytesWritten(10);
                    Sendpacket.clear();
                    sendControlPacket.clear();
                }
在Qtcpthread中变成了这样:
     //单包发送模式 Ui按钮控制命令
                if (!sendLoopPacketPersistent.hexString.isEmpty())
                {   
                    Sendpacket.name = sendLoopPacketPersistent.name;
                    Sendpacket.hexString = sendLoopPacketPersistent.hexString;
                    clientConnection->write(Sendpacket.getByteArray());
                    clientConnection->waitForBytesWritten(10);
                    sendLoopPacketPersistent.clear();
                    Sendpacket.clear();    
                }
                //continue;               
                //数据读取模式
                QByteArray readdata;
                readdata.clear();
                readdata = clientConnection->readAll();
                clientConnection->waitForReadyRead(10);
                if (!readdata.isEmpty())
                {
                    emit passdataout(readdata);
                }            
            }
一次写入,一次读取;写入的时候把ControlThread传的数据append了一下,与其他数据一起发送,而不是开始那样在while里检测是否有数据,二次写入;
开始是过两分钟后程序自动断点崩溃,现在不知为什么却没发现断的情况。这种情况肯定是野指针的问题,可关键是不知道在哪,程序像一个定时炸弹;