Een geheugenlek is wanneer een programma veroorzaakt een incrementele maar gestage verbruik van het geheugen , waardoor het programma om meer geheugen dan nodig te gebruiken . In het beste geval zal het programma gewoon gebruiken meer geheugen en vertraagt de computer . Extreme gevallen zal voldoende geheugen gebruiken om andere programma's kan crashen, wegens gebrek aan beschikbare geheugen , worst case scenario het zal uw besturingssysteem crasht . In C + + , kan geheugen lekken worden veroorzaakt door verschillende fouten in codering . Het volgende zal u tonen hoe om te controleren of uw programma heeft een geheugenlek en waar het te vinden . Instructies 1 Zoek uit of uw programma heeft een geheugenlek . Run je programma via de debugger door te typen : ' _CrtDumpMemoryLeaks ( ) ' De eerste regel van de code zal lezen " Ontdekte Geheugenlekken ! " Zo niet , dan is het programma niet over een geheugenlek . Spoor 2 beneden de locatie van het geheugenlek . De derde regel van Madame ' _CrtDumpMemoryLeaks ( ) ' gebruikt met de uitspraak : ' # define _CRTDBG_MAP_ALLOC ' ziet u de naam van het vertellen bestand waar de gelekte geheugen werd toegewezen . U kunt ook MFC gebruiken om geheugentoewijzingen volgen. In MFC de macro : . ' Debug_new ' kan gebruikt worden om het geheugen lekken opsporen 3 Ga naar het bestand vermeld . De slechte codering moet worden gevestigd . Er zijn verschillende oorzaken van een geheugenlek , verkeerd gebruik van nieuwe /delete , een misplaatste delete , " verloren " pointers of een aanwijzer gaat uit van de scope . Controleer de regels code waar het geheugen wordt toegewezen en eventuele problemen te corrigeren . Controleer of toegewezen geheugen in een lus wordt vrijgegeven in elke iteratie . Zorg ervoor dat je pointers kan niet uit te gaan van de scope voordat het geheugen wordt vrijgegeven . Controleer ook of de codes : ' malloc ' /' gratis' ' nieuwe' /' delete ' ' new [ ] ' /delete [ ] ' < br > correct worden gebruikt 4 Run je programma via de debugger opnieuw door te typen : . ' _CrtDumpMemoryLeaks ( ) ' om te zien of het probleem nog steeds optreedt .
|