Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να Εντοπισμός σφαλμάτων σε μια διαρροή μνήμης σε C + +

A διαρροή μνήμης είναι όταν ένα πρόγραμμα προκαλεί μια σταδιακή αλλά σταθερή κατανάλωση της μνήμης , με αποτέλεσμα το πρόγραμμα να χρησιμοποιήσει περισσότερη μνήμη από ό, τι χρειάζεται . Στην καλύτερη περίπτωση το πρόγραμμα θα χρησιμοποιήσει απλά περισσότερη μνήμη και επιβραδύνει τον υπολογιστή . Ακραίες περιπτώσεις θα χρησιμοποιήσει αρκετή μνήμη για να προκαλέσει και άλλα προγράμματα για την συντριβή λόγω της έλλειψης διαθέσιμης μνήμης , στη χειρότερη περίπτωση , θα διακοπεί η λειτουργία του λειτουργικού σας συστήματος . Σε C + + , διαρροές μνήμης μπορεί να προκληθεί από πολλά διαφορετικά σφάλματα κωδικοποίησης. Τα παρακάτω θα σας δείξει πώς να ελέγξετε για να δείτε αν το πρόγραμμα έχει μια διαρροή μνήμης και πού να το βρει . Οδηγίες
Η 1

Μάθετε εάν το πρόγραμμά σας έχει μια διαρροή μνήμης . Εκτελέστε το πρόγραμμά σας μέσα από το πρόγραμμα εντοπισμού σφαλμάτων , πληκτρολογώντας :

« _CrtDumpMemoryLeaks ( )«

Η πρώτη γραμμή του κώδικα θα διαβάσει " Εντοπίστηκε Διαρροές μνήμης ! " Αν όχι , τότε το πρόγραμμα δεν έχει διαρροή μνήμης . 2

Εντοπίστε τη θέση της διαρροής μνήμης . Η τρίτη γραμμή

» _CrtDumpMemoryLeaks ( )«

χρησιμοποιείται με τη δήλωση :

" # define _CRTDBG_MAP_ALLOC »

θα σας πω το όνομα του αρχείο όπου η διαρροή μνήμης διατέθηκε . Μπορείτε επίσης να χρησιμοποιήσετε MFC για να παρακολουθείτε εκχωρήσεις μνήμης . Στο MFC η μακροεντολή : .

« Debug_new »

μπορεί να χρησιμοποιηθεί για να παρακολουθείτε τις διαρροές μνήμης
εικόνων 3

Πηγαίνετε στο φάκελο που επισημάνθηκε . Η κακή κωδικοποίηση θα πρέπει να βρίσκεται . Υπάρχουν πολλές αιτίες της διαρροής μνήμης ? Λανθασμένη χρήση των νέων /διαγραφή , μια άστοχη διαγραφής , "έχασε " δείκτες ή ένας δείκτης βγαίνει από το πεδίο εφαρμογής . Ελέγξτε τις γραμμές κώδικα όπου η μνήμη κατανέμεται και να διορθώσει τυχόν προβλήματα . Ελέγξτε αν μνήμη κατανέμεται σε έναν βρόχο απελευθερώνεται σε κάθε επανάληψη . Βεβαιωθείτε ότι οι δείκτες δεν μπορούν να βγουν έξω από το πεδίο εφαρμογής πριν μνήμης απελευθερώνεται . Επίσης, ελέγξτε ότι οι κωδικοί :

« malloc » /«δωρεάν»

«νέα » /« διαγραφή »

«νέο [ ] ' /delete [ ] '

χρησιμοποιούνται σωστά
Η 4

Εκτελέστε το πρόγραμμά σας μέσω του εντοπισμού σφαλμάτων και πάλι πληκτρολογώντας : .

» _CrtDumpMemoryLeaks ( )«

για να δείτε εάν το πρόβλημα εξακολουθεί να παρουσιάζεται .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα