コードで STL マップを使用しています。関数の 1 つは、グローバルに宣言されている MAP を使用しており、セグメンテーション エラーが発生しています。しかし、そのMAPをローカル変数として作成すると、正常に機能します。次の関数作成の問題。
typedef map<int,string> DebugAllocPtrList_t;
DebugAllocPtrList_t DebugAllocPtrList;
int g_DebugAllocCount;
void DebugAllocNew(void *x, char *szFile, int iLine)
{
char szBuf[512];
szBuf[0]=0;
sprintf(szBuf,"%s line %d", szFile, iLine);
printf("Memory already allocated");
DebugAllocPtrList[(int)x] = szBuf; //here it gives fault when declared globally.
g_DebugAllocCount++;
}
この関数を独立して実行すると、機能しますが、この関数を実際のコードに入れると、セグメンテーション違反が 発生します。変数ローカルの場合も機能します。