Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1

    Homme Profil pro mamadou badji
    Informatique
    Inscrit en
    février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : Homme mamadou badji
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2013
    Messages : 2
    Points : -1
    Points
    -1

    Par défaut Utilisation des fonctions malloc() et free()

    bonjour
    je voudrais savoir comment utiliser ses fonction malloc et free par exemple dans une fonction de lecture merci d'avantage.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 226
    Points : 13 084
    Points
    13 084

  3. #3
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    23 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 23 607
    Points : 34 993
    Points
    34 993

    Par défaut

    Ça dépend dans quelles circonstances.
    • Si c'est pour lire un fichier, ou des données sur l'entrée, et qu'on précise en premier le nombre de données qu'on va saisir, on peut utiliser malloc() pour allouer un tableau de cette taille et le remplir au fur et à mesure qu'on lit.
    • Si c'est pour lire des données sur l'entrée standard sans que leur nombre soit entré en premier, il y a deux solutions: Le tableau agrandit périodiquement avec realloc() ou la liste chaînée (qu'on peut ensuite recopier dans un tableau).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre chevronné
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 119
    Points : 765
    Points
    765

    Par défaut

    Réservation de mémoire avant le début de la lecture selon n le nombre d'octets à lire, puis boucle de lecture si la mémoire a bien été réservée, puis libération de la mémoire lorsqu'elle n'est plus utile :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /* réservation d'une quantité de mémoire suffisante */
    char *tampon = malloc(n);
     
    /* si la mémoire a bien été réservée alors on lit */
    if (tampon != NULL)
      {
        /* boucle de lecture */
     
        /* utilisation des données lues et stockées en mémoire */
     
        /* libération de la mémoire */
        free(tampon);
      }
    << Il n'est pas dans Ses intentions de tout faire, ni donc de nous dépouiller de notre libre-arbitre et de cette poignée de gloire qui nous appartient. >> (Le Prince, Nicolas Machiavel)

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •