增加vld检测memleak

main
HwangKC 2025-03-04 14:22:27 +08:00
parent 9a5d784283
commit b28c28f425
3 changed files with 33 additions and 13 deletions

View File

@ -33,6 +33,13 @@ FORMS += \
LIBS += -lws2_32
INCLUDEPATH += $$PWD/../../SDK/include
CONFIG(debug, debug|debug) {
INCLUDEPATH += "D:/Visual Leak Detector/include"
win32:LIBS += "D:/Visual Leak Detector/lib/Win64/vld.lib"
}
TRANSLATIONS += \
EmsShower_en_US.ts
CONFIG += lrelease

View File

@ -1,3 +1,7 @@
#ifdef _DEBUG
#include <vld.h>
#endif
#include "mainwindow.h"
#include <QApplication>
@ -10,9 +14,11 @@ int main(int argc, char *argv[])
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
for (const QString &locale : uiLanguages)
{
const QString baseName = "EmsShower_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
if (translator.load(":/i18n/" + baseName))
{
a.installTranslator(&translator);
break;
}

View File

@ -116,6 +116,12 @@ MainWindow::~MainWindow()
ptr = nullptr;
}
m_SlaveData.clear();
if (m_pSettings!=nullptr)
{
delete m_pSettings;
m_pSettings = nullptr;
}
}
void MainWindow::getConfiguration(QString iniFilePath)
@ -287,16 +293,16 @@ bool MainWindow::readRegister(int addr,int nb,uint16_t* dest)
delete []tab_reg;
DeviceData* pDevice = nullptr;
DeviceData* pDevice = nullptr;
if (pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_00_09
|| pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_09_06)
pDevice = new TemperatureData();
if (pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_00_09
|| pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_09_06)
pDevice = new TemperatureData();
startAsyncProcess(registers,pItem->id,pItem->start_address, pItem->quantity, pDevice);
if (pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_00_09
|| pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_09_06)
|| pItem->start_address == TH08D_TEMPERATURE_EQUIPMENT_81_09_06)
{
TemperatureData* pData = (TemperatureData*)pDevice;
assert(pData);
@ -311,6 +317,7 @@ bool MainWindow::readRegister(int addr,int nb,uint16_t* dest)
}
qDebug() << "同步读取地址" << pItem->start_address;
delete pDevice;
}
return true;
}
@ -325,7 +332,7 @@ void MainWindow::startAsyncProcess(const QVector<uint16_t>& array,int slave_id,i
// 连接线程启动信号和槽函数
connect(this, &MainWindow::startProcessing, worker, &DecodeWorker::processArray);
// 工作完成后退出线程
connect(worker, &DecodeWorker::finished, thread, &QThread::quit);
connect(worker, &DecodeWorker::finished, worker, &DecodeWorker::deleteLater);
@ -339,13 +346,13 @@ void MainWindow::startAsyncProcess(const QVector<uint16_t>& array,int slave_id,i
thread->start();
QEventLoop loop;
QObject::connect(worker, &DecodeWorker::finished, &loop, &QEventLoop::quit);
QEventLoop loop;
QObject::connect(worker, &DecodeWorker::finished, &loop, &QEventLoop::quit);
// 发射信号传递参数
emit startProcessing(array, slave_id, start_addr, quantity, pDevice);
// 发射信号传递参数
emit startProcessing(array, slave_id, start_addr, quantity, pDevice);
// 阻塞,等待线程结束
// 阻塞,等待线程结束
loop.exec();
qDebug() << "同步读取完成";