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 :

Que fait malloc ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut Que fait malloc ?
    Salut,

    Oui, j'aimerais connaitre le niveau de complexité du malloc pour savoir si je devrais essayer d'en faire le moins souvent possible ou si c'est pas grave d'en faire beaucoup.
    Par exemple, si le malloc est assez compliqué, ça me motiverait pour créer des TAD qui allouent pas mal d'un coup et qui prennent dans leur reserve par la suite, au lieu de refaire des malloc.
    Mais, si le malloc fait deja un truc similaire (je prends un paquet de memoire vive la premiere fois, puis pour les malloc qui suivent, j'utilise un bout de ce que j'ai pris la premiere fois), peut être que ça vaut pas le coup.

    Merci

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    J'oubliais : sur PC/Linux.

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    J'avais programmer un gestionnaire de mémoire en C (pour voir le nombre d'allocations, de free, ce qui n'a pas été désalloué, si l'utilisateur a écrit hors des bornes...). Pour stocker les entrées, j'avais initialement fait une liste chaînée simple.

    Mais pour améliorer le code, j'ai ensuite utilisé une liste chaînée de tableau, et lorsque qu'un élément était désallouée, il allait dans un stock pour éviter une allocation future (je sais pas si on se comprend).

    Si il y a bcp d'allocations séparées comme ça, il est souvent conseillé d'allouer par bloc (gain de mémoire (car le malloc met des drapeaux qui font perdre de la place) et gain de temps.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Cela depend du gestionnaire de memoire du systeme. malloc() et realloc() sont couteux, mais s'il n'y a que quelques allocations a faire, cela ne vaut pas le coup de se compliquer la vie. Si on mise sur la vitesse et que les allocations sont toutes d'une taille standard (ce qui arrive souvent dans les applications reseau, par exemple), il est alors preferable de creer un pool de zones memoires pre-allouees, et de travailler dessus.

    Quant au niveau de complexite de l'implementation de malloc(), il varie pas mal selon les systemes. Dans les systemes modernes tournant sur workstations, un free() ne rend en general pas la memoire au systeme d'exploitation, mais le processus en garde la propriete pour accelerer les malloc() suivant. L'usage memoire augmente sans diminuer jusqu'a la fin du processus. Sur un super-calculateur, ce n'est pas vrai: la somme totale de la memoire utilisee reflete l'usage instantane, afin de maximiser l'utilisation des ressources.

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Oué, c'est ce qu'il me semblait
    thanks

Discussions similaires

  1. [ Eclipse3.0 ] Mais que fait le debogueur ?
    Par Bz dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 07/07/2005, 14h31
  2. Réponses: 9
    Dernier message: 27/03/2005, 23h29
  3. mais que fait upper_range() dans un multimap?
    Par porcher dans le forum C++
    Réponses: 7
    Dernier message: 18/02/2005, 22h21
  4. comment savoir ce que fait mon pointeur??
    Par elekis dans le forum C++
    Réponses: 9
    Dernier message: 30/11/2004, 12h42
  5. Mais que fait static ???
    Par elsargento dans le forum C
    Réponses: 4
    Dernier message: 25/09/2003, 09h55

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