Objet : Liste pour les discussions techniques (liste à inscription publique)
Archives de la liste
- 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.