2010-12-14 4 views
0

私は関数のパラメータとしてstd :: mapを持っていて、デバッグモード(VS2008)ではマップに正しいキーと値がありますが、リリース時にプログラムを起動すると地図に泥棒がいる!std :: map怠惰な文字をリリースモードでのみ

コードダンプ:

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++) 
     { 
      ... 
     } 
     ... 
    } 

このコードはリリースモードでは機能しない理由を任意のアイデア?

おかげで、

+1

地図を塗りつぶすコードを投稿できますか?それは興味深い部分です:) –

+0

可能であれば 'CString'ではなく' std :: string'に切り替え、ポインタの代わりに参照を使用します。 –

+1

マップ内の文字列が完全に間違っているか、余分な文字がいくつかありますか?キーと値の両方が間違っていますか? – Dave

答えて

0

私の推測に挨拶をリリースして、あなたがまだデバッグCRTに対してコンパイルされており、_DEBUG定義された(またはその逆)を持っていないということです。

+0

こんにちは!ランタイムライブラリは/ MTに設定され、デバッグ情報の生成はNoです!デバッグモード/ MTdおよび/ DEBUG!マップでは、すべての文字が駄目です(単一の文字だけではありません)!他のアイデア! greets leon22 – leon22

+0

@ leon22:リリースでは何が定義されていますか? (C/C++ - >プリプロセッサ) – Goz

+0

WIN32; NDEBUG; _WINDOWS; _VC80_UPGRADE = 0x0600; _MBCS;リリース(WIN32)では$(NOINHERIT);デバッグでは_DEBUG; _WINDOWS greets leon22 – leon22

関連する問題