Un nombre de Handles en constante augmentation

Messages postés
13
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
23 mai 2011
- - Dernière réponse : cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
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
Afficher la suite 

2 réponses

Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
0
Merci
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++
Commenter la réponse de BruNews
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
79
0
Merci
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
Commenter la réponse de cs_DARKSIDIOUS