#include <qglobal.h>
#include <qvaluelist.h>
class test
{
public :
void essai()
{
QValueList <int>list;
for(int i=0;i<1000000;i++)
list.append(i);
qDebug("entreLes2");
sleep(5);
for(int i=0;i<1000000;i++)
list.append(i);
sleep(5);
list.clear();
}
};
int main()
{
qDebug("avant");
test toto;
toto.essai();
qDebug("apres");
sleep(100);
return 0;
}
Ce programme devrait :
1 - afficher "avant"
2 - créer l'objet toto
3 - créer une QValueList
4 - ajouter à cette dernière 1000000 valeurs et faire monter en conséquence la mémoire VmSize
5 - afficher "entre les deux"
6 - ajouter à la même liste 1000000 valeurs et faire monter en conséquence la mémoire VmSize
7 - effacer tous les éléments de la liste et libérer la mémoire VmSize en conséquence
8 - détruire l'objet QValueList
9 - afficher "apres"
10 - attendre 100 secondes
11 - détruire l'objet toto
Malheureusement, ni à l'étape 7, ni à l'étape 8, la mémoire VmSize n'est libérée.
La mémoire n'est libérée qu'à l'étape 11.