Bonjour,
Je me heurte à un probleme de gestion mémoire.
Rien de nouveau en C++ me direz vous, mais néanmoins...
Contexte :
Sur le projet que je developpe, on utilise des modeles objets plutot lourds, des libraires externes, etc... du bon gros projet de 120k lignes en somme.
Le soucis c'est qu'a présent, les données utilisées/generées (ex: graphe de scene) sont tellement devenues imposantes que la mémoire sature rapidement, déclenchant des magnifiques crash.
Je cherche donc un moyen de gerer les allocations mémoire pour éviter ou tout du moins limiter la portée des crash.
De ce que j'ai vu/lu les operateurs new levent des exception std::bad_alloc si necessaire, sans pour autant retourner NULL.
Ce que je voudrais éviter c'est de devoir encadrer chaque new par un manager d'exception (bloc try...catch).
Un seul bloc pourrait faire l'affaire s'il est placé à haut niveau, en tout cas je pense, mais la complexité est telle qu'il n'est pas évident de localiser le bon endroit pour le placer.
Ma question est donc de savoir si le fait de placer un seul bloc (ou une poigné) à haut niveau dans le code (par haut niveau j'entend le main() ou les méthodes principales) pourrait suffire à gerer les crash.
D'autre part, le catch permettra de ne pas crasher l'application, mais l'état des elements alloués en mémoire à ce moment ne sera selon moi pas connu, et donc il sera difficile de continuer l'execution du programme.
Il y a aussi la possibilité de surcharger/redéfinir l'operateur new, mais je doute que celà aide...
Voilà j'espere etre resté compréhensible, si ce n'est pas le cas n'hesitez pas à demander des clarifications.
Merci de votre aide.
Partager