在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的标准库,不会报错,但会发生内存泄漏。
谁知道为什么?
...全文
78 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
green2 2003-01-08
  • 打赏
  • 举报
回复
修改一下编译参数,使用多线程版本的stl,试试看,我在传递string 时遇到过类似问题
J2eeLearner 2002-12-29
  • 打赏
  • 举报
回复
你改用make_pair试试呢?

而且map::first_value只能是const,我不知道你为什么能够编译成功的,哈~
winco 2002-12-29
  • 打赏
  • 举报
回复
up

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧