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 :

Bien faire un malloc sur un pointeur de pointeur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut Bien faire un malloc sur un pointeur de pointeur
    Bonjour,

    Avant je fesait comme ca pour allouer un tableau et le remplir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
                                    char **param
    char **test;
     
    test = malloc(sizeof(test)*Taille tableau + 1);
    + 1 pour le dernier élément ou je mettrais l'adr 0
     
    while (param[i] != 0)
    {
    test[i] = malloc(sizeof(char)*(strlen(param[i])+1));
    + 1 pour le \0
    test[i] = param[i];
    i++;
    }
    test[i] = 0;
    Dites moi ce que je fais mal dans le malloc mais ca marchait avant, sauf que maintenant a partir du 2eme malloc je dois faire sizeof(char*) pour que j'ai ce que je voulais

    pouvez vous m'expliquer pourquoi ?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test = malloc(sizeof(test)*Taille tableau + 1);
    est incorrect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test = malloc(sizeof(*test)*Taille tableau + 1);
    Pour la suite, je suppose que param est correctement initialisé et que c'est un tableau de pointeurs sur des chaines de caractères.
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test[i] = malloc(sizeof(char)*(strlen(param[i])+1));
    test[i] = param[i];
    La deuxième ligne écrase la valeur retournée par le malloc. On ne copie pas un tableau simplement avec le signe =. Accessoirement, sizeof(char) vaut toujours 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test[i] = malloc(strlen(param[i])+1);
    if(test[i] != NULL) strcpy(test[i] , param[i]);
    -
    Vu que test[i] est une adresse, il est préférable d'écrire

Discussions similaires

  1. Pointeurs et pointeurs de pointeurs
    Par wallace27 dans le forum C
    Réponses: 10
    Dernier message: 09/04/2015, 22h07
  2. Réponses: 21
    Dernier message: 06/08/2009, 09h31
  3. Réponses: 3
    Dernier message: 05/08/2009, 09h23
  4. Réponses: 6
    Dernier message: 26/05/2007, 00h33
  5. Réponses: 12
    Dernier message: 31/12/2005, 16h01

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