-1
int ICOperator::ICStarts( const char *port )
{
    if ( NULL == OpenReader) { qDebug() << ""; }

    this->devNo = this->OpenReader( 0, sPort );

    return this->devNo;
}

如函数所示,qDebug()并没有真正执行,但程序会崩溃,如果注释如下:</p>

int ICOperator::ICStarts( const char *port )
{
  //  if ( NULL == OpenReader) { qDebug() << ""; }

    this->devNo = this->OpenReader( 0, sPort );

    return this->devNo;
}

在 qDebug() 中会发生什么?可能堆栈错误?

4

1 回答 1

1

您的应用程序崩溃不是因为您正在使用调试,而是因为您的逻辑并未避免使用无效指针。

如果 OpenReader 为 NULL 那么这是无效的OpenReader( 0, sPort )

int ICOperator::ICStarts( const char *port )
{
    if ( NULL == OpenReader)
    { 
         qDebug() << "Invalid OpenReader";
         return -1; 
    }

    this->devNo = this->OpenReader( 0, sPort );
    return this->devNo;
}
于 2021-07-05T08:28:40.763 回答