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 :

Segmentation char > char **


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut Segmentation char > char **
    Bonsoir,

    j'ai un petit probleme que j'arrive pas a debug meme avec gdb donc je demande de l'aide


    Voila je vais faire cour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int main(int argc, char *argv[]) {
    	 char **tab;
    	char tmp[250]= "coucou";
     
    	tab[0] = tmp;
    }
    j'ai pas recopié tout mon code car je sais qu'il marche le problème est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    : Run Command: line 1:  1181 Segmentation fault: 11  ./"$2" "${@:3}"

    j'ai mi strdup et strcpy même résultat

    Voila merci de m'aider


    Problème résolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[i2] = (char*)malloc((strlen(tmp)+1)*sizeof(char));
    après strdup ou strcpy

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Surtout, après le malloc, lorsque vous n'avez plus besoin de la mémoire (fin du programme), il faut appelez free() pour libérer la mémoire que vous avez prise avec le malloc.

    De plus, cela ne marchera pas avec strcpy(), car cette fonction n'alloue pas la mémoire dont vous avez besoin pour effectuer la copie des caractères. Il vous faudra un malloc de plus (ou utiliser strdup qui le fait lui même).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Bonjour

    Une dernière petite remarque, il n'est pas nécessaire de caster le retour de malloc en C. C'est une habitude à éviter car c'est fait implicitement par le compilateur. C'est en C++ ou les gens castent le retour.
    Faites attention à ne pas confondre.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb conversion unsigned char vers char *
    Par FamiDoo dans le forum C
    Réponses: 11
    Dernier message: 24/08/2006, 18h11
  2. Comparer 2 Char / Convertir Char -> Int
    Par mbk-w dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/06/2006, 11h09
  3. unsigned char* to char*
    Par xela2000 dans le forum MFC
    Réponses: 4
    Dernier message: 20/11/2005, 16h07
  4. conversion char wide char
    Par ep31 dans le forum MFC
    Réponses: 4
    Dernier message: 15/11/2005, 08h14
  5. Pb Invalid Conversion "char" to "char*"
    Par kazarn dans le forum C++
    Réponses: 3
    Dernier message: 02/03/2005, 13h24

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