[英]QT Destructor not being called
我在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,但不更改。
MyServer::file
可能是您的問題。 您是否正在打開該文件以在代碼的其他位置進行寫訪問? 因為QSettings
還將嘗試打開同一文件,並且您對同一文件的兩次並發訪問可能正在破壞其內容。
如果您不需要MyServer::file
的任何東西,那就擺脫它。 QSettings
不需要QFile
。 它只需要文件名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.