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

Langage C++ Discussion :

Operateur new qui plante


Sujet :

Langage C++

  1. #21
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par zenux Voir le message
    J'était persuadé que la première chose que le compilateur faisait, s'était lire les instructions du preprocessor afin de savoir ce qu'il devait faire et ensuite, elles n'intervenaient plus, non ?
    Oui, justement... Par exemple dans un A.h, imagines que tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct A
    {
      int i;
    #ifdef _DEBUG
      int j;
    #endif
    };
    Dans un .cpp, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define _DEBUG
    #include "A.h"
    Et dans l'autre, tu as
    Alors, dans une de tes unités de compilation (le résultat de la compilation de ton cpp), A n'as pas le même, et est deux fois plus grand, que dans l'autre, d'où le soucis.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  2. #22
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Particulièrement fourbe.

  3. #23
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Particulièrement fourbe.
    Oh bon sang j'ai eu exactement ce coup là une fois, sauf qu'au lieu d'un #define _DEBUG c'était un #define _SECURE_SCL 0 avec Visual Studio 2008 (pour désactiver les checks des iterateurs). Du coup la taille d'un std::vector passait de 24 à 16 octets.

    Le pire étant que le #define avait été rajouté dans un header à dix mille lieux du bug, la sorte de header primitif qui se retrouve inclus en cascade dans *presque* tout le projet. Du coup un std::vector était censé avoir une taille de 16 octets *presque* partout sauf dans une poignée de .cpp où de banales fonctions prenant des std::vector& en paramètres se mettait à planter mystérieusement.

    Tout ça quelques jours avant la deadline.

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Ma dernière question était assez conne. En effet, l'erreur est facilement compréhensible.

    Je crois que j'aurais encore pu chercher longtemps sans votre aide. Merci beaucoup.
    Le pire, c'est que ça fait des mois que j'ai des "#ifdef _DEBUG" qui sont dans mes .h et je n'ai jamais eu de problème.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Novice] Problème avec Eclipse 3.0.x qui plante
    Par esolarc dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2005, 13h22
  2. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50
  3. Pc qui plante
    Par tooms2028 dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 19/03/2005, 17h32
  4. [JTextArea] redessin qui plante
    Par phil_ma dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2005, 05h19
  5. [JDBC]Un new qui renvoie null...
    Par Ditch dans le forum JDBC
    Réponses: 4
    Dernier message: 03/01/2005, 13h14

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