Accéder au contenu.
Menu Sympa

technique - mallinfo(); ou alternative

Objet : Liste pour les discussions techniques (liste à inscription publique)

Archives de la liste

mallinfo(); ou alternative


Chronologique Discussions 
  • From: Alain Coulais <alain.coulais AT obspm.fr>
  • To: "technique AT april.org" <technique AT april.org>
  • Subject: mallinfo(); ou alternative
  • Date: Tue, 8 Jun 2010 12:01:16 +0200


Bonjour,

Pour un projet libre auquel je contribue (GDL),
interpréteur codé "en dessous" en C/C++,
nous devons pouvoir retourner la mémoire actuellement utilisée
ainsi que la mémoire max allouée précédemment.

"Amount of dynamic memory (in bytes) currently in use"

Le code utilisé marche bien sous OSX et OpenSolaris,
mais retourne des résultats non satisfaisants pour Linux
(testé sous 32 et 64b, Débian, Ubuntu et CentOS).

Les recherches sur le web ne m'ont pas vraiment aidées,
à part augmenter ma confusion ...

(mon niveau d'incompétence en C/C++ est notoire ...)

Désolé pour la naïveté de mes questions

Merci de tout retour d'expérience ...

Alain C.

PS: évidemment, on préférerait du code simple sans #if
dans tous les sens, mais, bon ...

http://gnudatalanguage.cvs.sourceforge.net/viewvc/gnudatalanguage/gdl/src/basegdl.hpp?revision=1.50&view=markup&sortby=date

vers lignes 280

#if defined(HAVE_MALLINFO)
// Linux case for example
static struct mallinfo mi;
mi = mallinfo();
Current = mi.uordblks;
#elif defined(HAVE_MALLOC_ZONE_STATISTICS) && defined(HAVE_MALLOC_MALLOC_H)
// Mac OS X case for example
static malloc_statistics_t stats;
malloc_zone_statistics(malloc_default_zone(), &stats);
Current = stats.size_in_use;
#elif defined(HAVE_SBRK)
// Open Solaris case for example
static char* EndOfMemory;
EndOfMemory = (char*)sbrk(0);
Current = EndOfMemory - StartOfMemory;
#else




--
Alain Coulais, PhD http://aramis.obspm.fr/~coulais/
LERMA CNRS et Observatoire de Paris
[33](0)1.40.51.21.45 / [33](0)6.20.61.43.66



  • mallinfo(); ou alternative, Alain Coulais, 08/06/2010

Archives gérées par MHonArc 2.6.16.

Haut de le page