Retourner aux forums || Retourner au forum Programmation.c++

Programmation.c++ : connaitre l'allocation mémoire en C++

Posté par Rork () le 19 juin 2006
0
Bonjour,

Est-il possible de connaitre (pour l'afficher dynamiquement an bas de la fenêtre) la consommation mémoire que mon programme en C++.

Ceci sans lire directement dans /proc, car je veux que mon programme reste portable.

Est-ce qu'il existe une bibliothèque et des fonctions qui permettent d'obtenir facilement ces informations?

Merci

> Lire le message (3 commentaires, moyenne: 2,7).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

2 possiblités ...

Posté par Sébastien Le Roux (page perso, ) le 19/06/2006 à 10:16. (lien). Évalué à 1.

me viennent à l'esprit ..
1) soit système: récupération de l'info par top/ps
peut être pas le mieux pour la portabilité
2) soit dans le code
avec une variable globale et à chaque fois que tu alloues/dé-alloues
quelque chose tu incrémentes-décrémentes la variable de la taille de ce que tu alloues/dé-alloues ...

getrusage

Posté par alenvers () le 19/06/2006 à 11:03. (lien). Évalué à 6.

$ man getrusage


GETRUSAGE(2) Linux GETRUSAGE(2)

NAME
getrusage - get resource usage

SYNOPSIS
#include <sys/time.h>
#include <sys/resource.h>

int getrusage(int who, struct rusage *usage);

DESCRIPTION
getrusage() returns current resource usages, for a who of either
RUSAGE_SELF or RUSAGE_CHILDREN. The former asks for resources used by
the current process, the latter for resources used by those of its
children that have terminated and have been waited for.

struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* maximum resident set size */
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* messages sent */
long ru_msgrcv; /* messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary context switches */
};

Solutions possibles

Posté par malin () le 19/06/2006 à 11:36. (lien). Évalué à 1.

Voir:

mtrace
valgrind
mudflap
purify (payant)

Autre possibilite: surchager new/delete pour les classes suspectees de fuites.

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c++