Salut,

J'ai développé un programme sous Visual C++ qui utilise les éléments de la classe CDC (classe pour dessiner dans l'application). Quand je lance l'éxécutable, au bout d'une cinquantaine de minutes, mon programme plante !
J'ai regardé d'où pouvait venir mon problème et ... j'ai un élément de réponse : quand je lance le gestionnaire de tâches de Windows, je constate que l'espace mémoire utilisée par mon application augmente de 4KiloOctets de façon régulière (ce qui, au cumulé de l'éxecution de mon application, mon programme plante !)
Dans mon programme, j'appelle toutes les 2 secondes la fonction suivante dans un thread :
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
void CMyApp::DrawLongitudinalAxis(CStatic* area,int min,int max,char nbraxis)
{
	CDC* ChartCDC;	//Déclaration d'un Device Context
	CRect ChartRect;//Déclaration d'un rectangle englobant
	CPen aPen;	//Déclaration d'une plume
	CString Etiquette;//Déclaration d'une variable de type String
 
	area->Invalidate(TRUE);
 
	ChartCDC = area->GetDC();		//Affectation de la zone de dessin à la variable ChartCDC
	area->GetClientRect(&ChartRect);	//Affectation du rectangle englobant du graphique à la variable area
	ChartRect.DeflateRect(1,1);
	ChartCDC->SetBkMode(TRANSPARENT);
	ChartCDC->SetTextAlign(TA_LEFT);
	aPen.CreatePen(PS_DASHDOT,1,RGB(255,0,0));	
	ChartCDC->SelectObject(&aPen);
 
	ChartCDC->MoveTo(0,ChartRect.Height()-5*(ChartRect.Height()/(nbraxis-1)));
	ChartCDC->LineTo(ChartRect.Width(),ChartRect.Height()-5*(ChartRect.Height()/(nbraxis-1)));
	Etiquette.Format("%.0f",(float)5*(max-min)/(nbraxis-1)+min);
	ChartCDC->TextOut(0,ChartRect.Height()-5*(ChartRect.Height()/(nbraxis-1))-7,Etiquette);
 
	aPen.DeleteObject();
	ChartCDC->ReleaseOutputDC();
	area->ReleaseDC(ChartCDC);
}
Je suis sûr que mon problème vient de là car quand j'enlève l'éxecution de cette fonction toutes les 2 secondes, mon programme ne plante pas et l'espace mémoire utilisé par mon application n'augmente pas.

C'est la première fois que je rencontre un problème de ce genre et je remercie d'avance tout ceux qui pourront m'aider.