我在我的代码中使用 STL 映射。其中一个功能是使用全局声明的 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++;
}
如果我独立运行这个函数,它的工作。但是当我把这个函数放到我的实际代码中时,它会给出分段错误。如果我让 DebugAllocPtrList_t DebugAllocPtrList; 变量本地然后我也会工作。