2010-12-14 124 views
0

J'ai un std :: map comme paramètre pour une fonction et en mode Debug (VS2008) la carte a les bonnes valeurs et les bonnes valeurs, mais quand je lance le programme en Release il y a sont des caractères merdiques sur la carte!std :: map crappy uniquement en mode release

décharge Code:

std::map<CString, CString> libVersions; 
    ... // fill values 
    utilFunctions->Function(&libVersions)) 

    bool UtilityFunctions::Function(std::map<CString,CString> *dllMapData) 
    { 
     ... 
     map<CString,CString>::iterator it; 

     for(it=dllMapData->begin(); it!=dllMapData->end(); it++) 
     { 
      ... 
     } 
     ... 
    } 

Toutes les idées pourquoi ce code ne fonctionne pas en mode de sortie ???

Merci et accueille

+1

Pouvez-vous poster le code qui remplit la carte? C'est la partie intéressante :) –

+0

Basculer vers 'std :: string' au lieu de' CString' si possible, utiliser des références au lieu de pointeurs. –

+1

La chaîne de la carte semble-t-elle complètement erronée ou y a-t-il seulement quelques caractères supplémentaires? Les clés et les valeurs sont-elles fausses? – Dave

Répondre

0

Je pense que dans la version que vous compilez toujours contre le CRT de débogage et n'ont pas _DEBUG défini (ou vice versa).

+0

Salut! La bibliothèque d'exécution est définie sur/MT et Générer des informations de débogage est non! En mode débogage/MTd et/DEBUG! Dans la carte tous les caractères sont merdiques (pas seulement des caractères uniques)! D'autres idées! salue leon22 – leon22

+0

@ leon22: Quelles sont les définitions que vous avez définies dans la version? (C'est sous C/C++ -> préprocesseur) – Goz

+0

WIN32; NDEBUG; _WINDOWS; _VC80_UPGRADE = 0x0600; _MBCS; $ (NOINHERIT) dans la version et WIN32; _DEBUG; _WINDOWS dans le débogage! salue leon22 – leon22