Συνάρτηση για μέτρηση μνήμης

panourg | Τρί, 12/06/2011 - 09:56 | 1' | 3

Καλημέρα σας. Υπάρχει κάποια συνάρτηση στην C (χρησιμοποιω τον gcc) που να δίνει όταν την καλώ το μέγεθος της μνήμης που έχω καταναλώσει για το προγραμμα μου, μέχρι εκείνη την στιγμή? 

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Χμ... δεν ξέρω αν γίνεται με μία μόνο συνάρηση, αλλα ίσως μπορεί να σε βοηθήσει να συγκεντρώσεις κάπου τα bytes που "πιάνουν" οι μεταβλητές σου (μεταβλητές, πίακες, δομές κτλ), με τη χρήση της sizeof().

Δεν νομιζω ότι η C/C++ έχει σχετικές συναρτήσεις.

Ο καλλίτερος ίσως τρόπος είναι να καλέσεις μέσα από το πρόγραμμά σου εντολές που να σου επιστρέφουν το ζητούμενο σποτέλεσμα... Δες εδώ για περισσότερες σχετικές λεπτομέριες...

Εξαρτάται τι εννοείς "μνήμη". Αν σε ενδιαφέρει μόνο το τι έχει δεσμευτεί στο σωρό τότε μπορείς απλά να αντικαταστήσεις τη malloc με τη δική σου έκδοση η οποία θα κρατά λογαριασμό (και αντίστοιχα και τη free).

Αν δεν μπορείς να το κάνεις αυτό (π.χ., λόγω βιβλιοθηκών που χρησιμοποιείς οι οποίες κάνουν τα δικά τους allocation) ή αν θέλεις να δεις το σύνολο της μνήμης (δηλ, μαζί και το μέγεθος του κώδικα / static data / shared κλπ) τότε καλύτερα να το κάνεις εξωτερικά.

Αν θέλεις να ελέγχεις μόνο συγκεκριμμένα σημεία του κώδικα τότε μπορείς να εισάγεις breakpoints/tracepoints σε αυτά τα σημεία ώστε το πρόγραμμα να σταματά για να μπορείς να μετρήσεις.