Un nombre de Handles en constante augmentation

kokoariko Messages postés 13 Date d'inscription mercredi 4 février 2004 Statut Membre Dernière intervention 23 mai 2011 - 25 août 2004 à 21:38
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 26 août 2004 à 08:33
Avec le gestionnaire des tâche, j'ais remarquer que le nombre de Handles associer à mon programme, augmente contament.
600 en 5 min, et + de 2000 en 1 heures, ce qui est plus que "svchost.exe" (1482 Handles). Alors que mon nombre de Threads lui reste a peut pres constant '8'.
J'apprend la tête dans le code et grace a des site comme les votre, et les terme des Handles et Thread reste un peut flou.

Les questions sont ici :
Est-ce inquitant pour le bon déroulement du prog ?
A quoi cela est du ?
Comment controller ce nombre de Handles ?

(Idem pour 'Erreurs de page', mais là, impossible de batre Explorer avec 220 000 erreurs)

A vous les studios...

Arikoko vous Salut

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2004 à 21:46
Faut que tu verifies dans ton code si tu refermes bien tout ce que tu ouvres avec CreateFile, Createxxx de la GDI etc...
Il leur faut a chacun un CloseHandle ou DeleteObject associe, selon la func de creation. Voir MSDN.

ciao...
BruNews, Admin CS, MVP VC++
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 août 2004 à 08:33
Lorsque tu crée un objet comme un crayon ou une brosse, ou encore lorsque tu ouvre un fichier, que tu crée des contrôles, etc., Windows attribue automatiquement un handle pour chacun de ces objets pour que tu puisse les identifier rapidement et de façon unique.

Comme le dit BruNews, il faut bien vérifier que lorsque tu n'a plus besoin d'un handle, tu libère les ressources associées à celui-ci, car sinon, ton système risque de manquer de mémoire vive, ou dépasser la limite de handle maximale (je ne me rappelle plus de combien elle est !)

Donc par exemple, à chaque CreateSolidBrush(), il faut un DeleteObject correspondant.

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Rejoignez-nous