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

Affichage des résultats du sondage: Quelle est le meilleur environnement de développement?

Votants
0. Vous ne pouvez pas participer à ce sondage.
  • Visual C++

    0 0%
  • C++ Builder

    0 0%
  • MinGW GCC

    0 0%
  • Autre

    0 0%
VC++ .NET Discussion :

Erreur à l'exécution


Sujet :

VC++ .NET

  1. #1
    Membre averti
    Homme Profil pro
    Minimexé
    Inscrit en
    Août 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Minimexé

    Informations forums :
    Inscription : Août 2009
    Messages : 25
    Par défaut Erreur à l'exécution
    Bonjour,

    Je reçois un message d'erreur à l'exécution lorsque je compile un projet avec Visual C++.

    L'exception est la suivante:

    Runtime AccessViolationError
    Le code concerné est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double Point::getX()
    {
    return x;
    }
    Une autre erreur est qu'aucun de mes printf ou cout n'affiche quoi que ce soit.

    Dans le watch de variables je vois :
    Point * P {0x..., x=0.0000, y=0.000}

    De plus dans la Call stack, certaines paramètres de fonctions n'apparaissent pas correctement. Un object Point déclaré pour passer par valeur apparait comme Point*.

    Le projet s'exécute correctement avec MinGW

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime AccessViolationError
    C'est un pointeur foireux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double Point::getX()
    {
    return x;
    }
    C'est un peu court jeune homme, "this" est-il correctement initialisé ?

    Une autre erreur est qu'aucun de mes printf ou cout n'affiche quoi que ce soit.
    On n'est plus dans les années 70, il y a des débuggeurs pour ça.

    De plus dans la Call stack, certaines paramètres de fonctions n'apparaissent pas correctement. Un object Point déclaré pour passer par valeur apparait comme Point*.
    Avez-vous demandez de générer les fichiers pdb lors de la compilation ?
    Avez-vous bien vérifié qu'ils étaient bien récupérés dans la fenêtre "Output" lors du démarrage d'une session de débugging ?

    Le projet s'exécute correctement avec MinGW
    Un projet qui s'exécute, c'est étrange comme concept, chez moi, c'est des exécutable qui s'exécute.
    Et même en JAVA, le concept compilation à un endroit c'est comme partout ailleurs, c'est du flan, de l'intox de marketeux. Bien venu dans le monde réel.

  3. #3
    Membre averti
    Homme Profil pro
    Minimexé
    Inscrit en
    Août 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Minimexé

    Informations forums :
    Inscription : Août 2009
    Messages : 25
    Par défaut Quelques éclaircissements
    Je suis plutôt habitué à Java, d'ailleurs le code est copié-collé-adapté depuis une version Java de mon projet.

    Qu'en est-il des pointeurs en C++?

    Si je déclare une classe:
    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
     
    class Point
    {
    public:
    Point()
    {
    x=1.0;y=1.0;
    }
    Point(Point p)
    {
    x=p.getX(); 
    y=p.getY();
    }
    ~Point(){}
    double getX()
    {return x;
    }
    double getY()
    {
    return y;
    } 
    private:
    double x;
    double y;
    };
    et que j'appelle dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Point p(); // Le constructeur est-il appelé?
    Point p2 = Point() // Le constructeur est-il appelé?
    Point *p3 = new Point(); // Le constructeur est-il appelé?
    Point p4 = Point(p); // Est-ce que Visual C++ refuse le passage de paramètres par valeur?
    Je ne vais pas uploadé tout mon code. J'irai voir dans la documentation à l'avenir. Je suis simplement étonné de l'incompatibilité des compilateurs MinGW et VC++. D'habitude je fais du Java (incompatibilité au niveau de la plateforme d'exécution) ou du PHP (langage interprété qui n'a pas ces incompatibilités).

  4. #4
    Membre averti
    Homme Profil pro
    Minimexé
    Inscrit en
    Août 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Minimexé

    Informations forums :
    Inscription : Août 2009
    Messages : 25
    Par défaut Un point pour VC++
    Le problème était un dépassement de capacité de tableau, non détecté dans le code compilé par G++ mais qui ne s'exécute pas dans VC++

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Attention, cette détection des dépassements sous VC++ n'est disponible qu’en Debug, pas en Release.

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

Discussions similaires

  1. [JVM][8.1.7] Erreur d'exécution de initjvm.sql
    Par Escuzze dans le forum Oracle
    Réponses: 4
    Dernier message: 01/07/2005, 15h39
  2. Message d'erreur à l'exécution d'une install
    Par titof dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 22/03/2005, 11h20
  3. [CR8][VB6] Erreur d'exécution 20533
    Par pvava dans le forum SDK
    Réponses: 1
    Dernier message: 01/02/2005, 10h27
  4. Erreurs d'exécution sous delphi 5
    Par nkd dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2004, 17h25
  5. [Apache Perl] Erreur à l'exécution de mes cgi
    Par GLDavid dans le forum Apache
    Réponses: 4
    Dernier message: 28/08/2004, 20h23

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