Bonjour a tous !!!!, J'ai un petit soucis de memory leaks. J'ai repris le memory manager du yes engine et la classe memoryManager genere des leaks.

Au momment de la destruction de MemoryManager il doit détruire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
std::map<void*, Block>  // stock les pointeur d'objet alloué
std::ofstream               // le fichier de sorti
std::stack<Block>         // stock tout les appel a delete
le probleme et que la std pour détruire les objets (map, ofstream, stack) appartenant a memorymanager, appelle les surdefinition de new et delete
ce qui entraine un appelle a la fonction free de MemoryManager alors que l'on est dans le destructeur de memorymanager.

j'ai creer un projet avec un main basique avec le memorymanager et les surdefinition de new et delete du yes engine. il y a juste le main qui est de moi.

main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
#include <crtdbg.h>
#include "DebugNew.h"
 
void main()
{	
	int*p =new int;
	delete p;
	_CrtDumpMemoryLeaks();
}
les memory leaks
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
Detected memory leaks!
Dumping objects ->
{162} normal block at 0x00327BE0, 40 bytes long.
 Data: <         |2     > CC CC CC CC CD CD CD CD 00 7C 32 00 CD CD CD CD 
{161} normal block at 0x00327B80, 32 bytes long.
 Data: < {2             > E0 7B 32 00 00 00 00 00 00 00 00 00 00 00 00 00 
{136} normal block at 0x003266F8, 60 bytes long.
 Data: < f2  f2  f2     > F8 66 32 00 F8 66 32 00 F8 66 32 00 CD CD CD CD 
Object dump complete.
Merci