Désallocation mémoire dans une Dll
Bonjour,
Je suis confronté à un petit prolème : j'ai créé une Dll standard en C qui est utilisée par une interface développée avec les MFC.
L'ensemble fonctionne correctement mais j'ai des fuites mémoires que j'ai réussie à identifier.
Dans le point d'entrée de la Dll, j'ai déclaré deux fonctions, lors du chargement et lors du déchargement de la Dll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
_MPP_init();
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
_MPP_close();
break;
}
return TRUE;
} |
Lors du chargement j'alloue notamment 3 variables :
Code:
1 2 3 4 5 6 7 8 9
| static void _MPP_init(void)
{
...
m_pIPSocket = (s_IPSocket*) malloc(sizeof(s_IPSocket));
m_pIPParam = (s_IPParamThread*) malloc(sizeof(s_IPParamThread));
m_pIPParam->socket = m_pIPSocket;
m_dataRecu = (char*) malloc(sizeof(char)*32);
...
}; |
et lors du déchargement, je les libère:
Code:
1 2 3 4 5 6 7
| static void _MPP_close(void)
{
...
free(m_dataRecu);
free(m_pIPSocket);
free(m_pIPParam);
} |
Lors de la fermeture de l'interface, et donc lors du déchargement de la Dll, il passe bien dans la fonction _MPP_Close(). En regardant la zone mémoire concernée, les variables semblent bien désallouées mais lors de l'arrêt du programme Visual Studio détecte des fuites mémoires sur ces 3 variables.
Auriez vous des idées?