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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?