저는 흥미로운 상황에 직면하고 있으며 모든 것을 공유하고 싶습니다. 확실히, 어떤 사람이 도와 주면 감사 할 것입니다!std :: map :: find (char *)가 디버그 모드에서 64 비트 머신에서 작동하지 않습니다.
#include "stdafx.h"
#include <map>
#define DEF_NAME1 "NAME1"
#define DEF_NAME2 "NAME2"
#define DEF_NAME3 "NAME3"
#define DEF_NAME4 "NAME4"
struct TInfo
{
const char * TName;
const char * TArray1[100];
const char * TArray2[100];
};
typedef std::map<const char*, TInfo*> TInfoMap;
typedef std::pair<const char*,TInfo*> TInfoPair;
static TInfoMap tinfomap;
TInfo TInfoArray[] =
{
{DEF_NAME1,{""}, {""}},
{DEF_NAME2,{""}, {""}},
{DEF_NAME3,{""}, {""}},
{DEF_NAME4,{""}, {""}}
};
TInfoMap* GetTInfoMap()
{
for (int i = 0; i < 3 ; i++)
tinfomap.insert(TInfoPair(TInfoArray[i].TName,&TInfoArray[i]));
return &tinfomap;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *name="NAME3";
TInfo* ptr = new TInfo();
TInfoMap* map1 = GetTInfoMap();
if (map1->find(name) == map1->end())
printf("Not found");
else
printf("Found!");
return 0;
}
나는 Windows 2003 Server 64bit를 사용 중입니다. 출력이 "발견되었습니다!" 디버그 모드에서이 프로그램을 컴파일/실행할 때 릴리스 모드에서이 프로그램을 컴파일/실행할 때 출력이 "찾을 수 없음"입니다.
아이디어가 있으십니까?
감사합니다,
Azher는
감사합니다. 그런 다음 릴리스 모드에서도 작동하지 않아야합니다. 릴리스 모드에서는 작동하지만 디버그 모드에서는 작동하지 않으므로 혼란 스럽습니다. –
디버그 및 릴리스 모드에서 생각이 다르게 작동 할 수 있습니다. 이것은 잘 알려진 문제입니다 (예 : http://www.flounder.com/debug_release.htm) – dimba
idimba, Great !!! 도움 주셔서 감사합니다. –