C++ 未调用QT析构函数

C++ 未调用QT析构函数,c++,qt,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

我对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.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,但它没有更改。

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


如果你什么都不需要
MyServer::file
,那就把它扔掉
QSettings
不需要
QFile
。它只需要文件名。

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


如果你什么都不需要
MyServer::file
,那就把它扔掉
QSettings
不需要
QFile
。它只需要文件名。

您是如何验证未调用
~MyServer()
的?文件编辑过程:)能否显示该过程或类似的重现问题的过程?试着打个比方,否则我们只能猜测。你用了
new
,所以你被搞砸了。拆下它,事情就会正常工作。(没有调用的不是
~MyServer()
,而是
~QFile()
)在析构函数中放置断点或打印一些内容。您是如何验证没有调用
~MyServer()
的?文件编辑过程:)能否显示该过程或类似的重现问题的过程?试着打个比方,否则我们只能猜测。你用了
new
,所以你被搞砸了。拆下它,事情就会正常工作。(没有调用的不是
~MyServer()
,而是
~QFile()
)在析构函数中放置断点或打印一些内容。
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();
}