Ett antal sätt finns tillgängliga för att fastställa om ett datorprogram läcker minne . En programmerare kan sålla igenom källkoden för att se till att allt minne som tilldelats har avallokerats , kan han skriva ett program som testar sin mjukvara för minnesläckor , kan han utarbeta ett system minneshantering som tillåter honom att hålla koll på använt minne eller han kan använda en tredje part program som testar för minnesläckor . Vad är en minnesläcka ?
En minnesläcka är en oönskad minnesanvändningen av ett datorprogram , där programmet allokerar minne för användning och inte avallokera det när minnet inte längre är i bruk . Denna bit av minnet kommer inte längre att vara tillgänglig för datorprogram . Ett program som läcker tillräckligt med minne över tillräckligt med tid kan leda till att systemet slut på tillgängligt minne , vilket kan göra att programmet eller datorn för att misslyckas . Minnesläckor kan också orsaka ett system för att sakta ner till en otillfredsställande hastighet , på grund av minnet stryk . Program som körs under lång tid , utföra många tilldelningar eller allokera minne i stora bitar kan vara särskilt benägna att farliga minnesläckor .
Använd Good kodning metoder
bästa sättet att se till att ditt program inte läcker minne är att skriva bra kod som lämpligt hanterar systemets resurser . Se till att för varje funktionsanrop som fördelar minne, finns det ett motsvarande samtal som deallokerar minnet. Vissa språk som Java , C # och VB.NET , ge sophämtning , där systemet regelbundet kontrollerar att tilldelade minnet är fortfarande i bruk . Även om dessa system inte hindrar minnesläckor helt , är det mindre troligt att de kommer att inträffa . Andra språk , som C + + , tillåta stack fördelning , där en bit av minnet deallokeras automatiskt när variabeln som refererar till den går ut ur räckvidd . Genom att använda rätt språk för uppgiften och upprätthålla god praxis programvara skrivande , kan många minnesläckor undvikas helt .
Skapa en Minneshanterare
Vissa dator program kräver så mycket kod att köra som läser igenom programmet för att hitta där minnet har läckt är helt enkelt inte möjligt . I dessa fall kan det vara meningsfullt att skriva en komponent minne chef till programmet . Programvaran skulle då ha ett enhetligt gränssnitt för att fördela några bitar av minnet , och håller reda på var och hur dessa bitar fördelas . I sin enklaste form ger chefen helt enkelt feedback, vilket gör att programmeraren att se hur mycket minne som används och vilka komponenter som använder den . Det kan också ge sophämtning och styra hur minne allokeras och avallokeras , vilket ger en programmerare bara ett ställe att leta efter minnesläckor , istället för all kod för hela programmet .
Skapa ett testprogram
Man kan ofta se på minnet som används av ett program med ett verktyg , till exempel Windows Task Manager eller " top " på Unix /Linux för att avgöra om minnet är som läckt . Detta är inte alltid bevis på en minne läcka, men kan ge några inledande feedback. Ibland är det möjligt att skriva ett enkelt program som testar de olika delarna i ett program för att avgöra om minnet läcker . Testet Programmet kan dynamiskt bestämma eller få förkunskaper om hur mycket minne ett datorprogram bör använda . Den säkerställer då att den använda mängden är den mängd som bör användas . Om en minnesläcka uppstår , ger testprogrammet feedback på hur det hände , vilket gör att programmerare att åtgärda läckaget .
Tredje parts programvara
Programmerare kan använda många tredje - partiprogram och bibliotek för att testa om deras programvara läcker minne . I Microsoft . NET Framework , kan man aktivera testa minnesläcka genom att använda debug versioner av funktioner minnesallokering . På Linux , Unix och Mac , kan du använda verktyg, såsom Valgrind , dmalloc och Försäkring + + för att isolera en minnesläcka . Många minne debuggers finns också för Windows . Det bästa verktyget för jobbet beror på utvecklingsmiljön och vilket språk som används , liksom specifika kännetecken för programmet att felsöka , såsom storlek , krav på hastighet och de sätt den interagerar med systemet . Det finns många verktyg att välja mellan , och de kan vara en välsignelse för frustrerade programmerare trött på att leta efter den sista gäckande läckan . Addera