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

Visual C++ Discussion :

Initialisation CString Debug/Release


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par d�faut Initialisation CString Debug/Release
    Bonjour � tous,

    Petite question. J'ai un programme qui marche tr�s bien en mode debug mais pas en mode release.

    J'ai r�ussi � trouver d'o� �a vient. J'utilise un CString :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    CString    test;
    sIoi.Format (_T("%u"), p_sTest);
    En mode debug, "test" prend bien la valeur demand�e mais en mode release j'ai toujours <bad ptr>. D'o� cel� vient-il? Je pense que c'est l'option de compilation 'Basic Runtime Checks' :
    - Default en Release
    - Both (/RTC1, equiv. to /RTCsu) en Debug.

    Mais lorsque je passe � 'Both (/RTC1, equiv. to /RTCsu)' en release, j'ai un message d'erreur :
    'Both (/RTC1, equiv. to /RTCsu)' is not compatible with the option 'O2'.

    Je corrige �a tranquillou mais quand je relance �a plante encore plus. Donc, comment initialiser proprement un CString pour �viter d'avoir cette erreur?

    Merci d'avance

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    c'est la valeur par d�faut de test qui est explos� ?
    le plus simple est de faire le test de cette d�claration en tout d�but de programme pour v�rifier ce point. (genre initinstance)
    pour moi la m�moire est corrompue avant.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par d�faut
    Hum pas �vident.

    Oui c'est la valeur de test qui ne s'inialise pas.
    Si je place la d�claration dans le InitDialog :

    J'ai toujours <bad ptr> en mode release (pas � pas) (ce que je n'ai pas en mode debug puisque dans ce cas sIoi est correctement initialis� � "").

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    tu n'as pas chang� la taille de l'alignement sur les structures ?, ou de pragma pack(x) d'alignement ?
    tu utilises des dll ? sous entendu pas de m�lange avec la CRT (/MT et /MD)

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par d�faut
    Merci de tes r�ponses tout d'abord.

    Pour les deux premiers questions, je n'ai touch� � rien.

    Sinon oui, j'utilise des DLL. Sinon voici les propri�t�s de mon projet :

    En debug:
    Basic Runtime Check : 'Both (/RTC1, equiv. to /RTCsu)'
    Runtime Library : 'Multi-threaded Debug (/MTd)'

    En release:
    Basic Runtime Check : 'Default'
    Runtime Library : 'Multi-threaded DLL (/MD)'

    Si en release, je change ma Runtime Library � 'Multi-threaded Debug (/MTd)', �a marche. Quel est donc le probl�me puisque j'imagine qu'il ne faut pas laisser cette valeur en release?

  6. #6
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    si j'ai parl� de l'alignement c'est que j'ai d�j� rencontr� ce probl�me,
    les MFC de Visual 2005/2008 ne supportent plus un changement d'alignement m�moire. (sous vc6 c'etait possible).
    j'ai eu le cas avec le .h d'une biblioth�que qui faisait un pragma pack sans push et pop , �a plantait bien notamment sur les CString ...
    A part chercher les diff�rences de r�glages je ne vois pas trop ce que l'on peut dire de plus.
    v�rifie quand meme les r�glages de ton projet et des DLL pour l'alignement et la configuration de la CRT.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 18/07/2006, 11h33
  2. R�ponses: 5
    Dernier message: 21/06/2006, 14h02
  3. Passage Mode debug -> release
    Par Bayard dans le forum MFC
    R�ponses: 2
    Dernier message: 08/05/2006, 13h06
  4. R�ponses: 3
    Dernier message: 18/08/2005, 10h17
  5. chargement DLL mode debug/release
    Par bihorece dans le forum C++Builder
    R�ponses: 3
    Dernier message: 21/06/2004, 14h05

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