Segfault将QString传递给函数

时间:2016-09-02 11:47:05

标签: qt segmentation-fault qstring

我想从我的Qt应用程序将G-CODEs传递给3D打印机。我有一个函数,它接受一个QString并将其作为参数传递给外部程序:

void MainWindow::gcodeRelay( const QString &gcode )
{
    QObject *parent;
    relayProcess= new QProcess(parent);
    QString program = "./gcoderelay/gcoderelay";
    relayProcess->start(program, QStringList() << ui->tcp_server->text() << ui->client_port->text() << gcode );
}

但调用该函数会导致程序因segfault而崩溃:

void MainWindow::on_custom_gcode_clicked()
{
    QString gcode = ui->line_custom_gcode->text();    //SEGFAULT
    gcodeRelay( gcode );
}

这有效:

void MainWindow::on_custom_gcode_clicked()
{
    QString gcode = "G28";                              //WORKS
    gcodeRelay( gcode );
}

有趣的是,这不是:

void MainWindow::on_custom_gcode_clicked()
{
    QString gcode;
    gcode = "G28";                                  //SEGFAULT
    gcodeRelay( gcode );
}

根据调试程序,当新进程创建(在它开始之前)发生崩溃时

为什么会这样?另外,我对最后两段代码之间的差异以及它如何导致这样的问题感到困惑?

谢谢你,我只是学习,所以要善待:)

0 个答案:

没有答案