STL 与 DLL 高手请进 !!!
DLL文件MapDll.Dll代码
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
class __declspec(dllexport) CMapTest
{
typedef map <string, int> ContextList;
public:
void DelData(int Data);
void AddData(string Index,int Data);
CMapTest(){}
virtual ~CMapTest(){}
ContextList m_ContextList;
};
void CMapTest::AddData(string Index,int Data)
{
m_ContextList[Index] = Data;
}
void CMapTest::DelData(int Data)
{
ContextList::iterator mapIter = m_ContextList.begin();
while(mapIter != m_ContextList.end())
{
if((*mapIter).second == Data)
{
m_ContextList.erase(mapIter);
break;
}
mapIter++;
}
}
exe 文件Test.exe代码
int main(int argc, char* argv[])
{
CMapTest m_MapTest;
m_MapTest.AddData("111111",18);
m_MapTest.DelData(18);
return 0;
}
问题:运行Test.exe 出错
Debug Assertion Failed!
Program: E:\eeee\Debug\eeee.exe
File:dbgheap.c
Line:1044
Expresssion:_CrtIsValidHeapPointer(pUserData)
For information on how you programe can cause an assertion
failure, see the Visual C++ documentation on asserts
谁能解释这个问题?