Я попытался создать приложение Qt . При использовании Valgrind наблюдаются утечки памяти, вызванные QMenu
. Я не в состоянии понять это точно. Я попытался следовать примеру QT для класса QTMenu , но даже это привело к утечкам. Valgrind уведомляет, что здесь происходят утечки при вызове addMenu:
void MainWindow::createMenu()
{
//Create menus
QAction *quit = new QAction("&Quit", this);
QMenu *file = menuBar()->addMenu("&File");
file->addAction(quit);
connect(quit, &QAction::triggered,
[=]() {
QApplication::quit();
});
//Creating instances of ticker and timer here
//Done so that the connection between ticker and timer is possible
ticker = new Ticker(this);
timer = new Timer(this);
connect(timer, &Timer::timeout, ticker, &Ticker::playSound);
}
Это и есть журнал Valgrind
The leaks happen with 78 (32 direct, 46 indirect) bytes in 1 blocks are definitely lost in loss record 11,297 of 16,371
in MainWindow::createMenu() in /home/user/Documents/C/QT/Metronome/MainWindow.cpp:47
1: operator new(unsigned long) in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
2: 0x1630a434
3: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1
4: QMainWindow::menuBar() const in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1
5: MainWindow::createMenu() in /home/user/Documents/C/QT/Metronome/MainWindow.cpp:47
6: MainWindow::setMainWindow() in /home/user/Documents/C/QT/Metronome/MainWindow.cpp:20
7: MainWindow::MainWindow(QWidget*) in /home/user/Documents/C/QT/Metronome/MainWindow.cpp:6
8: main in /home/user/Documents/C/QT/Metronome/main.cpp:22
Итак, мой вопрос: как мне выложить меню, чтобы избежать утечек памяти? Кстати, удаление раздела QAction
, QMenu
не приводит к утечкам.