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 :

probleme de pointeur avec une string


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Points : 48
    Points
    48
    Par défaut probleme de pointeur avec une string
    Bonjour a tous,

    Ma solution contient un projet LogTools qui devient une dll et un projet Test qui me sert a tester cette dll. Je suis sur Visual Studio 2008

    Dans ma solution test, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main()
    {
     
    	string c = "C:\\Users\\monNom\\Documents\\";
    	logTools.createLog(false,"","",0,c);
    Cote LogTools, y'a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    bool LogTools::createLog(bool man, std::string srvManName, std::string typeSrv, const int serverRank,  std::string repLogInfra)
    {	
    	repLogInfra = repLogInfra + "padidoum";

    J'obtiens :
    Unhandled exception at 0x000007fefd4b940d in TheTestingProject.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0012d3a0..

    En fait, je ne peux tout simplement pas acceder a ma valeur "repLogInfra".
    Si je passe ma souris sur la variable lors d'un debug comme on fait pour avoir la valeur, il m'indique <bad ptr>

    Je trouve ca tres etrange, vous auriez une idee ?

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    Salut,

    à première vue, faut juste passer ton "repLogInfra" par référence si tu veux la modifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LogTools::createLog(bool man, std::string srvManName, std::string typeSrv, const int serverRank,  std::string repLogInfra)
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    LogTools::createLog(bool man, std::string srvManName, std::string typeSrv, const int serverRank,  std::string& repLogInfra)
    Modification à faire aussi dans le header of course

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Le probleme c'est que d'autres projets utilisent cette fonction tres bien. Je ne suis pas sense la changer.

    J'ai quand meme essaye ta solution mais elle m'a retourne l'erreur :

    Unhandled exception at 0x000007fefd4b940d in TheTestingProject.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0012d3e0..

    Edit : Merci de t'etre penche sur mon cas !

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Ca pourrait etre un probleme d'alignement non ?

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    A mon avis le problème ne vient pas de cette string.
    En fait, le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void func( string str )
    {
       str = "toto"; 
    }
    n'est pas du tout faux, par contre il peut ne pas faire ce qui est attendu, dans le sens où il ne modifie pas la variable passée en argument à la fonction. Ce que fait ce code, c'est qu'il crée une temporaire qui prend la valeur du paramètre, mais qui sera supprimée en sortant de la portée de la fonction.

    Non à mon avis, le problème vient d'ailleurs, peut-être au niveau de la dll. Le truc typique, sous windows: le .lib ne correspond pas à la dll (sous windows, il y a deux types de .lib: un qui contient un lib compilée en statique, mais un autre qui fait officie de .def, qui ne contient que les adresses des fonctions compilées dans le .dll).
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    C'etait un horrible probleme de parametrage que quelqu'un a finalement reussi a resoudre.
    Existe t'il des tutos sur cette question ?

  7. #7
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Ça dépend de quelle question il s'agit. Le problème pouvait avoir mille causes différentes.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

Discussions similaires

  1. mon premier pas avec builder c++ problem avec une string grid
    Par chahinerue6 dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/01/2010, 21h42
  2. Réponses: 4
    Dernier message: 29/07/2005, 11h59
  3. [System][EXEC] Probleme d'execution avec une commande parametrée.
    Par chicorico dans le forum Général Java
    Réponses: 15
    Dernier message: 20/05/2005, 15h07
  4. Réponses: 14
    Dernier message: 09/08/2004, 13h42
  5. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26

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