Une fuite de mémoire , c'est quand un programme entraîne une consommation supplémentaire mais constante de la mémoire , ce qui provoque le programme à utiliser plus de mémoire qu'il n'en a besoin . Au mieux, le programme va simplement utiliser plus de mémoire et ralentir l'ordinateur . Les cas extrêmes vont utiliser une mémoire suffisante pour causer d'autres programmes à se crasher à cause d'un manque de mémoire disponible, le pire des cas, il va se planter votre système d'exploitation. En C + + , les fuites de mémoire peut être causée par plusieurs erreurs de codage différents . Ce qui suit va vous montrer comment vérifier pour voir si votre programme a une fuite de mémoire et où le trouver . Instructions
1
Découvrez si votre programme a une fuite de mémoire. Exécutez votre programme à travers le débogueur en tapant: « _CrtDumpMemoryLeaks () '
La première ligne de code sera lu" fuites de mémoire détecté! " Si non, alors le programme ne dispose pas d'une fuite de mémoire .
2
Retrouvez l'emplacement de la fuite de mémoire. La troisième ligne de
' _CrtDumpMemoryLeaks ()'
utilisé avec l'énoncé suivant:
' # define _CRTDBG_MAP_ALLOC '
vous indiquera le nom de l' déposer où la fuite de mémoire a été allouée. Vous pouvez également utiliser MFC pour suivre les allocations de mémoire. Dans MFC la macro: .
' DEBUG_NEW '
peut être utilisé pour suivre les fuites de mémoire
3
Aller vers le fichier indiqué . Les mauvais codage devront être localisé. Il existe plusieurs causes d'une fuite de mémoire , un mauvais usage des nouvelles /delete , une suppression égaré , pointeurs «perdus» ou un pointeur est hors de portée . Consultez les lignes de code où la mémoire est allouée et corriger les problèmes . Vérifiez si la mémoire allouée à une boucle est libérée à chaque itération . Assurez-vous de pointeurs ne peuvent pas aller hors de portée avant que la mémoire est libérée. Vérifiez aussi que les codes :
' malloc ' /
'libre' «nouvelle» /«supprimer»
' new [] ' /delete [] '< br >
sont utilisés correctement
4
exécuter votre programme à travers le débogueur à nouveau en tapant: . _CrtDumpMemoryLeaks () '
pour voir si le problème persiste.