2009-03-10 9 views
0

J'utilise un contrôle ActiveX qui est juste un gestionnaire HTTP. Il envoie une requête HTTP, obtient la réponse et déclenche un événement pour l'utilisateur. Lorsque l'utilisateur ne demande pas le contrôle ActiveX est à peu près dormant. Il attend juste une demande d'utilisateur pour envoyer une autre requête HTTP.Un problème de fuite de mémoire étrange

Tant que la fenêtre dans laquelle réside l'OCX ne change pas (perte de focus, mise au point, etc.), la mémoire reste calme. Pour chacune des opérations ci-dessus, je perds environ 400 octets.

Où devrais-je rechercher une fuite possible?

+0

Les informations que vous avez fournies ne sont pas suffisantes. S'il vous plaît ajouter la description la plus détaillée (peut-être avec des parties de code). – bayda

+0

@MSN :-) merci. Un inconvénient que j'ai oublié de mentionner est dans une application MFC, C++, il ne fuit plus. Mais dans une application .Net C#, il fuit même après les paramètres de variable d'environnement OANCCACHE = 1. Peut être une chose .Net AxInterop. Utilisation de windbg est douloureusement difficile dans le monde .Net pour lutter contre les fuites :-( – rptony

Répondre

1

En supposant que la chaîne HTTP est transmise via BSTR s, vous pouvez être en cours d'exécution dans BSTR caching. Pour vérifier, vous devez définir la variable d'environnement OANOCACHE sur 1 ou appeler directement le OaSetNoCache(). La variable d'environnement devrait être plus facile à tester avec.

0

Regardez les outils de profilage standard qui peuvent détecter cette fuite (même le mode de débogage dans VC a une option de traçage des allocations fuites).