2010-12-14 1 views
0

У меня есть std :: map как параметр для функции, а в режиме отладки (VS2008) карта имеет правильные ключи и значения, но когда я запускаю программу в Release там это дрянные символы на карте!std :: map crappy chars только в режиме освобождения

Код свалка:

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

Переключитесь на 'std :: string' вместо' CString', если это возможно, используйте ссылки вместо указателей. –

+1

Строка на карте выглядит совершенно неправильно или есть только несколько дополнительных символов? Являются ли ключи и значения неправильными? – Dave

ответ

0

Я предполагаю, что в выпуске вы еще компиляции против отладки CRT и не имеют _DEBUG определены (или наоборот).

+0

Привет! Runtime Library установлена ​​в/MT, а для генерации отладочной информации - нет! В режиме отладки/MTd и/DEBUG! На карте все символы дрянные (не только отдельные символы отличаются)! Любые другие идеи! приветствует leon22 – leon22

+0

@ leon22: Что вы определили в выпуске? (Его в C/C++ -> Препроцессор) – Goz

+0

WIN32; NDEBUG; _WINDOWS; _VC80_UPGRADE = 0x0600; _MBCS; $ (NOINHERIT) в Release и WIN32; _DEBUG; _WINDOWS в отладке! приветствует leon22 – leon22

 Смежные вопросы

  • Нет связанных вопросов^_^