在dll导出函数参数中传递map指针,并在函数中insert值,会导致调用方释放该map时出错,为什么?

sky_horse 2002-12-29 09:25:32
大意如下:
我写一个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的标准库,不会报错,但会发生内存泄漏。
谁知道为什么?
...全文
28 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
green2 2003-01-08
修改一下编译参数,使用多线程版本的stl,试试看,我在传递string 时遇到过类似问题
回复
J2eeLearner 2002-12-29
你改用make_pair试试呢?

而且map::first_value只能是const,我不知道你为什么能够编译成功的,哈~
回复
winco 2002-12-29
up
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告