Bonjour,

J'utilise Qt 3.3.4 sous linux.

J'ai codé un petit programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
#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.

Avez-vous une idée ?

Merci par avance.