Redéfinition opérateurs new et delete globaux
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 :
Code:
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 |
La fonction (static) pour récupérer l'instance de MemoryManager :
Code:
1 2 3 4 5 6
|
MemoryManager& MemoryManager::GetInstance()
{
static MemoryManager Instance;
return Instance;
} |
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.
Je cherche une astuce qui me permettrait de prendre en compte les opérateurs redéfinis une fois le MemoryManager initialisé.
Merci d'avance.