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

Discussion :

Violation en accès à l'appel de QString::fromWCharArray

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut Violation en accès à l'appel de QString::fromWCharArray
    Bonjour,

    je récupère une valeur du registre dans un whar_t* (LPTSTR en unicode quoi)
    et par la suite j'aimerais le stocker dans un QString

    mon code est le suivant :
    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
    CRegKey reg;
        wchar_t* sVal;
        DWORD dwLen = 512;
        int iResult;
     
        iResult = reg.Open( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Realtime Soft\\UltraMon"), KEY_READ | KEY_WOW64_64KEY );
        if ( iResult == ERROR_SUCCESS )
        {
            iResult = reg.QueryStringValue( _T("CurrentVersion"), sVal, &dwLen );
            if ( iResult == ERROR_SUCCESS )
            {
                _tprintf( TEXT("%i - %s"), dwLen, sVal );
                // m_sUMVersion = QString::fromWCharArray(sVal, dwLen);
            }
        }
    ce qui me donne en sortie : "6 - 3.2.1" et me fait penser que sVal est bien null terminated

    si je décommente la dernière ligne, le programme compile bien mais il crash à l’exécution (Test.exe a cessé de fonctionner)

    j'ai débugué avec VC++2010 : Violation d'accès lors de l'écriture à l'emplacement 0xffffffff

    je suis un peu largué

  2. #2
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Tu n’alloues pas de mémoire à sVal.

    ==> tu écris dans une zone non allouée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    Pourtant ce n'est pas l'écriture (dans QueryStringValue) qui plante mais bien la lecture (dans QString::fromWCharArray)

    cependant en allouant la mémoire ça ne plante plus
    je tient à dire que j'avais malloc() la mémoire dans un version précédente de ma fonction et ça fesait planter QueryStringValue (si si)

    bref, merci beaucoup

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

Discussions similaires

  1. Violation d'accès après appel d'une fonction DLL
    Par colorid dans le forum Langage
    Réponses: 9
    Dernier message: 12/06/2013, 12h15
  2. violation d'accès lors de l'appel de leftview
    Par moooona dans le forum MFC
    Réponses: 0
    Dernier message: 06/08/2010, 13h02
  3. WebService - Violation d'accès sur appel
    Par Maglight dans le forum Web & réseau
    Réponses: 1
    Dernier message: 26/01/2010, 17h06
  4. Réponses: 7
    Dernier message: 22/01/2008, 15h18
  5. Réponses: 3
    Dernier message: 29/05/2007, 17h18

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