在dll导出函数参数中传递map指针,并在函数中insert值,会导致调用方释放该map时出错,为什么?
大意如下:
我写一个dll中,有一个导出函数 void test(map<int,int> *pMap);
在该函数中有 pMap->insert(map<int,int>::value_type(10,100));
在另外一个程序中调用该dll的导出函数
{
map<int,int> testMap;
test(&testMap);
}
编译器:vc7
这样使用时,如果用vc7自带的标准库,会在testMap析构时出错。
如果用SGI的标准库,不会报错,但会发生内存泄漏。
谁知道为什么?