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

SL & STL C++ Discussion :

pb organisation memoire en string


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut pb organisation memoire en string
    voila ce que je fais :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #include <fstream> 
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
    	std::string fIn="jules.mp3";
     
        std::ifstream fichier(&fIn[0], std::ios_base::binary ); 
     
        if (!fichier) { std::cout<<"ne peut ouvrir le fichier :"<<fIn<<endl; return -1; }
     
    // recupere la taille des infos a lire
        fichier.seekg (0, std::ios_base::end); 
        int length = fichier.tellg(); 
        fichier.seekg (0, std::ios_base::beg); 
     
    // on lit le fichier
        std::string str(length, 0); 
        fichier.read(&str[0], length);
     
        fichier.close();
     
    int len=str.length();
    const char *tmp=str.c_str();
    char *mus = new char(len+1);
    int i;
    for (i=0; i<len; i++)
    {	mus[i]=tmp[i]; }
    mus[i]='\0';
     
      return 0;
    }
    et dans ma boucle for a un moment alors que je ne suis toujours pas arrive a i=len le programme me ressort l'erreur 'Access Violation'.
    Je suis sous VC+. et jules.mp3 proviens du package de fmod.

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    char *mus = new char(len+1);
    int i;
    for (i=0; i<len; i++)
    { mus[i]=tmp[i]; }
    Il serait bien de tester le retour de new ( allocation réussi ?)

    Il ne faudrait pas ecrire new char[len+1] plutot ?

    Sinon pourquoi passer par une chaine tmp ? tu pourrais faire


  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut
    Pour moi la seule erreur que tu as dans ton programme est pour le new où tu as mis () à la place de [], comme te la signaler hegros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *mus = new char[len+1];
    ca devrait marcher bcp mieux comme ca[

  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
    Surtout, pourquoi faire ce genre de manip pour revenir aux char[] et à leur segfault ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Par défaut
    ok c'est bon merci
    J'avais pas du tout fait attention

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Comme Loulou24. Aucun intérêt.
    De plus il existe tout ce qu'il faut das std::string pour effectuer la recopie (soit une encapsulation du for).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. Compilation et organisation memoire
    Par corentin59 dans le forum C
    Réponses: 15
    Dernier message: 14/07/2009, 06h23
  2. L'organisation de la mémoire
    Par vincent0 dans le forum Administration système
    Réponses: 5
    Dernier message: 11/12/2005, 12h38
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  4. Réponses: 2
    Dernier message: 05/06/2002, 12h29
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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