IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Espace mémoire alloué


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Doctorant en informatique théorique
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Doctorant en informatique théorique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Par défaut Espace mémoire alloué
    Bonjour,

    Existe-t-il un moyen de savoir durant l'exécution d'un programme la quantité de mémoire utilisée par une variable (initialisée via malloc)? Mon programme consomme étonnement beaucoup de mémoire mais je n'arrive pas à trouver d'où cela provient.

    D'avance merci
    Naked

  2. #2
    Membre émérite
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Par défaut
    Yopyop,
    Etant donné que tu utilises un malloc(X) pour ta variable, tu sais que ta variable utilisera X espace en mémoire.

    J'ai du mal comprendre la question en fait.

    Cordialement,

    Ex-Fiki

  3. #3
    Membre averti
    Profil pro
    Doctorant en informatique théorique
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Doctorant en informatique théorique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Par défaut
    Effectivement je l'ai écrite trop hativement ^^ En fait j'utilise des HashTable de glib et j'aimerais connaitre l'espace utilisé par chacune de ces tables.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Plutot que de t'inquiéter de leur taille, qui, tu peux l'espérer du moins, ne sera que du "juste nécessaire", tu devrais peut etre commencer par t'assurer que tu n'as pas de fuite mémoire suite à l'oubli d'un appel à free...

    De prime abord, glibc est suffisemment trituré dans tous les sens pour nous donner, peu ou prou, l'assurance d'un fonctionnement correct, même si on ne peut pas tout à fait édarter le possibilité dun dysfonctioneme
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre averti
    Profil pro
    Doctorant en informatique théorique
    Inscrit en
    Décembre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Doctorant en informatique théorique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 28
    Par défaut
    Salut,

    C'est justement pour vérifier si je n'ai pas une fuite mémoire que je voudrais savoir leur taille. J'utilise plusieurs HashTable et j'y stocke beaucoup de choses. Si j'arrivais à voir l'espace mémoire qui leur est alloué, je saurais ainsi si l'explosion est "normale" ou si c'est moi qui ai mal codé ;-)

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 490
    Par défaut
    Si tu ne l'a pas déjà fait, utilise déjà valgrind pour analyser ton programme. Sa perspicacité dans ce domaine est très surprenante la première fois qu'on l'utilise.

    Autrement, tu peux essayer de faire un profilage de ton programme (avec gprof si tu travailles avec GCC) ou de mettre un breakpoint sur malloc() à l'exécution pour, à chaque fois, examiner la pile des appels.

Discussions similaires

  1. mémoire allouée ?
    Par _yeye_ dans le forum C++
    Réponses: 18
    Dernier message: 30/03/2006, 14h35
  2. Libérer la mémoire allouée à un objet
    Par boudou dans le forum Langage
    Réponses: 6
    Dernier message: 21/02/2006, 22h25
  3. [C][obtenir l'espace mémoire libre]
    Par ronan99999 dans le forum Windows
    Réponses: 4
    Dernier message: 26/10/2004, 07h53
  4. [JVM & tomcat] Modifier la mémoire allouée
    Par sylvain_neus dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 22/06/2004, 09h13
  5. Accéder à un espace mémoire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 02/08/2002, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo