Не удается предотвратить утечку памяти при удалении элементов QList с помощью qDeleteAll () - PullRequest
0 голосов
/ 26 июня 2019

Я определил QList <QPushButton*> и хочу присвоить этот список QTableWidget позже.Но главная проблема заключается именно в том, что когда я хочу удалить все элементы QList, это вызывает у меня утечку памяти при использовании qDeleteAll():

// Add QPushButton* pointers to the QList
for (int i = 0; i < 5000; i++)
{
    btnList.push_back(new QPushButton("delete"));
}

BTW, за исключением первого способа нажатияpointers, также я попробовал это:

// Add QPushButton* pointers to the QList with second approach
for (int i = 0; i < 5000; i++)
{
    QPushButton *btn = new QPushButton("delete");
    btnList.push_back(btn);
}

Я пробовал с двумя подходами к delete указателям QList:

  1. Использование метода takeAt для получения указателяи delete указатель:

    for (int i = 0; i < 5000; i++)
    {
        delete btnList.takeAt(0);
    }
    btnList.clear();
    
  2. Использование qDeleteAll, затем clear метод:

    // Delete all items
    qDeleteAll(btnList);
    btnList.clear();
    

Ноутечка памяти все еще существует.Я использовал компилятор msvc2015 на Visual Studio

Также о моей проблеме я нашел эту ссылку, но она мне не помогла Эта ссылка

...