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++Builder Discussion :

"violation d'acces à l'adresse" en sortie de primi [Non suivi]


Sujet :

C++Builder

  1. #1
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut "violation d'acces à l'adresse" en sortie de primi
    Bonjour a tous !

    Je vous expose mon probleme :

    j'ai une class que je vais appeler TClass, dans le .cpp, j'ai le detail d'une primitive, cette fonction compile tres bien, mais lors de l'execution, lors de la sortie de cette fonction le Débogueur me "dit" :
    Notification d'une exception du débogueur

    Le projet Nom_Projet.exe a provoqué une classe d'exception EAccessViolation avec le message 'Violation d'accès à l'adresse 00000004. Lecture de l'adresse 0000000004'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    Je voudrais savoir ce qui peut générer cette erreur, et comment résoudre le probleme...

    merci par avance pour le temps que vous m'acorderez !

    PS : Ne sachant pas exactement quel partie du code pouvait etre concerné, je n'en présente pas, mais si des extrait de code peuvent vous servir a mieux comprendre, n'hésitez pas a me les demander.

    NetAh

  2. #2
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    salut,

    ça, ça sent le pointeur non initialisé

  3. #3
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Quelle ligne de code lance cette exception ? C'est celle qui est en surbrillance après le message, normalement. Vérifie que tu compileq bien en mode "debug" dans les options de compilation du projet si ce n'est pas le cas.

  4. #4
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    lors du "plantage", le debuggeur me met en surbrillance l'accolade "};" de fermeture du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int TClass::Func_Name(int var1)
    {
    // code
    }; //  <-- cette ligne en surbrillance lors du "plantage"
    merci

  5. #5
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    il y a donc problème lors de la destruction d'un objet alloué statiquement pendant la fonction à mon avis...
    [edit] on dirait pas... je vois pas trop où est le pb là[/edit]

    Elle est longue cette fonction ? On peut voire ce qu'il y a dedans ?

  6. #6
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    Elle n'est pas tres longue :


    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
     
    int TClass::Func_name(void)
    {
    int TestHinst=0;
    while (TestHinst==0)
    {
    FuncDLL_1=(FUNCDLL1)GetProccAddress(hDLLNameOfDLL,"Name_Func_1");
    FuncDLL_2=(FUNCDLL2)GetProccAddress(hDLLNameOfDLL,"Name_Func_2");
    /*il y en a 8 sur le meme format */
    FuncDLL_11=(FUNCDLL11)GetProccAddress(hDLLNameOfDLL,"Name_Func_11");
    FuncDLL_12=(FUNCDLL12)GetProccAddress(hDLLNameOfDLL,"Name_Func_12");
    TestHinst=1;
    }
    FuncDLL_1(var1,&var2);
    FuncDLL_3(var3);
    return var2;
    };
    donc rien d'exceptionel...

    désolé, je retouche un peu les noms des différentes variables et fonctions...

    cordialement !

  7. #7
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    où est créé var2 ?

  8. #8
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    dans les premieres lignes du meme .cpp

    La compilation se passe tres bien, c'est lors de l'execution que le debuggeur me signal un probleme...

  9. #9
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    donc si j'ai bien compris, var1, var2 et var3 sont des variables globales ou membres de la class TClass.

    S'il n'y a pas de pointeur, je vois pas trop où est le pb.

    t'es sûr que tes GetProccAddress() marchent ?

  10. #10
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    Oui les GetProccAddress mettent bien a jour le contenu de FuncDLL_1 et les autres... ( vérification en mode Pas-a-Pas...)

    merci

  11. #11
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Tu as activé Codeguard ? (options du projet => onglet codeguard, tout cocher) CodeGuard ne dit rien ?

  12. #12
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    Je dois partir pour ma pause méridionale, je test ca dés mon retour vers 13h et je vous tiens au courant

    merci encore pour votre aide !

  13. #13
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    CodeGuard affiche le journal suivant :

    -Method called on invalid object
    --Attempt to access 16 byte(s) at 0x00000000.
    --0x000000000
    ---TClass::NameOfFunc()
    ---TForm1::Button3Click(const System::TObject*)
    ---0x4010798A
    ---0X4010A9A8
    ---0x4010AAE0
    ---0x4010A9A8
    ceci en me surlignant la déclaration de TestHinst :
    voila !

    merci encore pour votre aide...

    [EDIT]

    Si je déclare TestHinst en début de ce .cpp

    ce journal de CodeGuard n'apparait plus, cependant j'ai la meme erreur de violation d'acces en adresse 00000004 a la sortie du code à l' accolade fermante ...

    [/EDIT]

  14. #14
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    Est ce que vous pourriez m'indiquer sur quel problématique je dois me pencher pour solutionner mon probleme?

    Je vous remercie

  15. #15
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    je persiste à croire que c'est un pb de pointeur (têtu moi ? )
    peux-tu nous montrer un peu plus de code (la classe TClass, comment se fait l'appel de la fonction Func_Name(),...)

  16. #16
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    Petite avancé,

    si je ne laisse que la série de GetProccAddress l'exécution se passe sans probleme, par contre c'est a partir du moment où j'appelle une des fonction que l'éxécution plante en sortie de code, la fonction me renvoie "NoError" en signal d'erreur, donc ce n'est pas un probleme en aval je pense...

    merci

  17. #17
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    si ça plante au moment du retour, c'est peut-être que la DLL modifie des données dans la pile.

    C'est une DLL que t'as faite toi-même ?
    Les arguments passés aux fonctions correspondent-ils bien à ce qu'attend la DLL ?

  18. #18
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    Pas de soucie pour les arguments,

    La DLL m'as été fournie avec des cartes d'acquisition de la société ICP DAS...

    Je l'ai déja fait fonctionné il y a quelque mois, donc je ne pense pas que la DLL pose probleme...

  19. #19
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    ben dans ce cas, dsl, mais je ne vois pas

  20. #20
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    merci pour le temps que tu m'as consacré jmv

Discussions similaires

  1. violation d'accès à l'adresse ect
    Par Shibron dans le forum Débuter
    Réponses: 9
    Dernier message: 20/01/2009, 14h01
  2. Réponses: 2
    Dernier message: 08/01/2009, 11h02
  3. Violation d'accès à l'adresse
    Par gentilman_delphi dans le forum Bases de données
    Réponses: 12
    Dernier message: 04/03/2008, 18h51
  4. Violation d'accès à l'adresse x
    Par Gremlins13 dans le forum Langage
    Réponses: 7
    Dernier message: 06/12/2007, 15h48
  5. Réponses: 2
    Dernier message: 18/11/2007, 09h11

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