objeto de exclusão de c ++ não libera memória [duplicado]
Esta pergunta já tem uma resposta aqui:
Por que a memória do meu programa não é liberada? 2 respostasTenho o seguinte código que criei para verificar como a memória pode alocar e liberar usando qt e c ++
Plataforma: Linux, Ubunut 16.04
testmemeory.h
#include <QObject>
class testMemeory : public QObject
{
Q_OBJECT
public:
explicit testMemeory(QObject *parent = nullptr);
void freeMEm();
char* str;
};
testmemeory.cpp
testMemeory::testMemeory(QObject *parent) : QObject(parent)
{
str = new char [30000];
}
void testMemeory::freeMEm(){
delete [] str;
}
Esta é a matriz que usei para armazenar o objet
std::vector<testMemeory*> testList;
E estou alocando a memória usando
void MainWindow::allocateMemory()
{
for(int i=0;i<50000;i++){
testMemeory *t = new testMemeory();
testList.push_back(t);
}
qDebug()<<"Memory allocated..";
}
E liberando memória usando
void MainWindow::relaseMemory()
{
for(int i=0;i<testList.size();i++)
testList.at(i)->freeMEm();
qDeleteAll(testList);
testList.clear();
qDebug()<<"Memory freed..";
}
Quando executo a alocação de memória, a RAM usada para o aplicativo aumentou de 150 MB para cerca de 350 MB, onde, como se a função relaseMemory () fosse chamada, a RAM ainda tem 350 MB e não reduzia para 150 MB
Qual seria a razão