未调用QT析构函数

时间:2018-02-08 16:51:13

标签: c++ qt

我有qt控制台应用程序的问题,没有调用MyServer类的析构函数。 这是我的简化代码:

#include <QtCore/QCoreApplication>
#include "MyServer/myserver.h" 
int main(int argc, char *argv[])
{

    QCoreApplication a(argc, argv); 
    MyServer server;
    server.startServer();
    return a.exec();

}

myserver.h

class MyServer : public QTcpServer
    {
        Q_OBJECT

public:
    MyServer(QObject *parent = nullptr);
    ~MyServer();
    QFile* file;
}

myserver.cpp

MyServer::MyServer(QObject *parent)
    : QTcpServer(parent)
{
    file = new QFile("file.ini",this);

}


MyServer::~MyServer()
{
    QSettings settings(file->fileName(), QSettings::IniFormat, this);
    settings.beginGroup("testGroup");


    settings.setValue("testValue", "asdf");
        settings.endGroup();
}

析构函数应该更改file.ini,但它不会。

1 个答案:

答案 0 :(得分:2)

MyServer::file可能是你的问题。您是否在代码中的其他位置打开该文件以进行写访问?因为QSettings将尝试也打开同一个文件,并且您对同一文件的两次并发访问可能会破坏其内容。

如果您不需要MyServer::file任何东西,那么就摆脱它。 QSettings不需要QFile。它只需要文件名。