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 :

char * et Allocation de memoire


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par d�faut char * et Allocation de memoire
    Bonjour,


    il y a un truc que j aimerais qu on m expliquer sur l allocation de memoire


    genre ce code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char haystack[] = "This code works.";
    char *haystack2 = "This code dont works.";
     
    char * token;
    token = strtok(haystack, " ");
     
    printf("%s\n",haystack);
    printf("%s\n",haystack2);
     
    token = strtok(haystack2, " ");

    Si je declare haystack avec un char[] aucun probleme avec strtok (ou strcpy c juste un exemple)


    Par contre avec un char* ca marche pas , que fait le compilateur alors puisque je peux quand meme afficher correctement la chaine ?


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    char *haystack2 = "This code dont works.";
    printf("%s\n",haystack2);

    Je sais qu en faisant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
     char string[] = "This code works";
            char *haystack = NULL;
            char * token = NULL;
            haystack = (char*) malloc (sizeof(string));
            strcpy(haystack,string);
            token = strtok(haystack, " ");
    Je resoud mon probleme mais j aimerais comprendre ce qui se passe exactement au niveau du code quand je fais un
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char *chaine ="quelque chose"
    qui fait que les fonctions comme strtok plante

    Merci

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut Re: char * et Allocation de memoire
    Citation Envoy� par venomelektro
    Par contre avec un char* ca marche pas , que fait le compilateur alors puisque je peux quand meme afficher correctement la chaine ?
    Dans le cas du char *, tu cr�e un pointeur vers une chaine stock�e dans une zone g�n�ralement en lecture seule (zone de donn�es initialis�es, �a d�pend des OS), avec [] tu d�clare un tableau dont la taille est celle de la chaine, et ce tableau est initialis� avec ta chaine (c'est comme un malloc + strcpy). Ta chaine n'est pas contenue dans la zone de donn�es initialis�e, mais du code est g�n�r� pour la cr�er dans ton tableau.
    D'ailleurs, c'est const char * = qu'il faut utiliser dans ce cas, ce qui �vite les probl�mes.

  3. #3
    Membre �clair� Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par d�faut
    ok merci bien

  4. #4
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Au passage, en C++ on s'emb�te bien moins en utilisant std::string et ses fonctions membres (findxxx, substr, ...).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Allocation de memoire
    Par remi77 dans le forum Windows XP
    R�ponses: 5
    Dernier message: 22/06/2007, 17h01
  2. ERROR allocation de memoire
    Par insa59 dans le forum GTK+ avec C & C++
    R�ponses: 7
    Dernier message: 15/03/2007, 09h50
  3. allocation de memoire pour char**
    Par Guillaume602 dans le forum C++
    R�ponses: 3
    Dernier message: 03/04/2006, 20h01
  4. outil permettant de tracker les alloc/dealloc memoire
    Par bob8181_2000 dans le forum C++Builder
    R�ponses: 2
    Dernier message: 03/09/2005, 19h57
  5. Allocation de memoire
    Par zakjo_developper dans le forum C
    R�ponses: 16
    Dernier message: 08/04/2005, 13h46

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