Bonsoir tout le monde,
en suivant le tutoriel sur la conception des moteurs 3D de Laurent Gomilla, j'ai eu un problème avec le gestionnaire de mémoire. Celui-ci redéfinit les opérateurs new et delete de la manière suivante :
La fonction (static) pour récupérer l'instance de MemoryManager :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 inline void* operator new(std::size_t size, const std::string& file, int line) { return memorymanager::MemoryManager::GetInstance().allocate(size, file, line); } ... //code similaire pour les autres opérateurs
Le problème est que le MemoryManager contient une map et une stack comme attributs de classe, et que pendant l'initilisation de la map, un opérateur delete est appelé ; la variable Instance n'étant pas initialisée, il rappelle le constructeur et ça boucle infiniment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 MemoryManager& MemoryManager::GetInstance() { static MemoryManager Instance; return Instance; }
Je cherche une astuce qui me permettrait de prendre en compte les opérateurs redéfinis une fois le MemoryManager initialisé.
Merci d'avance.
Partager