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 :

Compilation et optimisation


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Par défaut Compilation et optimisation
    Bonjour,

    Voici mon environnement: windows XP pro, Visual C++ 6.0

    J'ai créé 2 dlls, dont l'une appelle l'autre.
    Lorsque je compile en debug, tout ce passe bien.
    Lorsque je compile en release avec les optimisations à "default" idem.
    Par contre lorsque je passe en "maximize speed" plantage lors du retour
    de l'appel d'une fonction entre les dlls.
    En mettant des traces on voit que l'adresse du paramètre change avant
    et après l'appel ?????

    Est-ce que c'est un bug connu du compilo ou y a un truc qui m'échappe ?

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par renardbleu
    Est-ce que c'est un bug connu du compilo ou y a un truc qui m'échappe ?
    Surement un comportement indéfini.
    Par exemple tu écris un bit en dehors de l'espace alloué, en mode normal le compilateur alloue un peu plus que la taille demandé : il ne se passe rien. Avec les optimisions, il alloue juste la taille demandée et paf tu écris à l'adresse d'une autre variable ou dans la pile.

    C'est un exemple mais c'est la première chose à vérifier avant de mettre en doute le compilateur

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par gege2061
    Surement un comportement indéfini.
    Par exemple tu écris un bit en dehors de l'espace alloué, en mode normal le compilateur alloue un peu plus que la taille demandé : il ne se passe rien. Avec les optimisions, il alloue juste la taille demandée et paf tu écris à l'adresse d'une autre variable ou dans la pile.

    C'est un exemple mais c'est la première chose à vérifier avant de mettre en doute le compilateur
    Entièrement d'accord. Montre le code qui appelle cette fonction et le code de la fonction en question.

    Jc

Discussions similaires

  1. [Fortran 77] Effets de l'optimisation à la compilation
    Par gregory2526 dans le forum Fortran
    Réponses: 14
    Dernier message: 19/09/2007, 10h30
  2. Réponses: 7
    Dernier message: 04/05/2007, 14h29
  3. Optimisation par la (pré-)compilation
    Par femtosa dans le forum C
    Réponses: 4
    Dernier message: 02/05/2007, 11h25
  4. Compiler du java en natif & Optimisation serveur socket
    Par Skreo dans le forum API standards et tierces
    Réponses: 32
    Dernier message: 09/07/2006, 16h31
  5. Réponses: 2
    Dernier message: 27/02/2004, 13h47

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