Si le programme original fonctionne bien, alors qui est bon. Vous pourriez laisser assez bon seul, mais je pense toujours que vous devriez changer votre logique de fil pour être plus orienté objectivement comme j'ai mentionné. Sans modification, il est difficile de reprendre comment les choses fonctionnent de regarder votre code : vous avez UI mélangé à la fonctionnalité plus basse. Une classe de fil modularise tout tellement mieux et conduit à une lecture, par conséquent à une élimination des imperfections plus faciles si quelque chose a besoin regarder à une date ultérieure.
Mais hé, c'est votre projet… :)
>> avez-vous une idée pourquoi, quand il est terminé en cliquant le bouton de « x », le programme de mise au point indique des fuites de mémoire ?
Je vois le suivant après que je mette en marche le programme de mise au point, presse le bouton marche, puis étroit le $$etAPP :
Fuites de mémoire détectées !
Vidant des objets - >
{542} bloc normal à 0x00DB16A0, 16 bytes long.
Données :
<>bsp ;
 
;  
;
 
;  
; > A8 15 CD CD CD CD CD CD CD CD CD CD CD CD du DB 00
{541} bloc normal à 0x0003FBE8, 32 bytes long.
Données :
<>bsp ;
 
;  
;
 
;  
; > A0 16 DB 00 00 00 00 00 00 00 00 00 00 00 00 00
{526} bloc normal à 0x00DB3FA0, 28 bytes long.
Données :
<>bsp ;
 
;  
;
 
;  
; > 00 00 00 00 CD CD CD CD CD CD CD CD E8 FB 03 00
Décharge d'objet complète.
Ainsi j'ajoute le suivant à CWinThreadTestApp : : InitInstance () :
_CrtSetBreakAlloc (542) ;
_CrtSetBreakAlloc (541) ;
_CrtSetBreakAlloc (526) ;
Maintenant où le programme de mise au point est démarré, j'obtiens immédiatement une coupure de correction sur la ligne :
OpRequestQ = (queue*
)
nouvelle
file d'attente
; //
[
MAX_CONCURRENT_POLLS+1] ;
ainsi, ajouter
si suppression OpRequestQ (d'OpRequestQ) ;
à votre destructeur :) le _CrtSetBreakAlloc est vraiment une grande fonction pour faire l'utilisation étendue de si nécessaire :)