CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

熟悉stl给看一看!

楼主geobean()2001-08-09 20:54:35 在 C/C++ / C语言 提问

我在dll里写了这样一个函数:  
  void   meGetAtl(   map<   string,vector<unsigned   _int32>   >   &stlmap   )  
  编译,连接都通过,  
  客户程序调用dll里的这个函数,  
  运行时,当使用传回的stlmap时  
  出现access   violation错误。谁知道理由亚? 问题点数:22、回复次数:6Top

1 楼myan()回复于 2001-08-09 21:21:36 得分 5

写DLL时不要使用STL。Top

2 楼geobean()回复于 2001-08-10 09:10:17 得分 0

为什么?Top

3 楼xiterator(xi)回复于 2001-08-10 14:43:57 得分 15

一个原因是STL大量使用了在heap中new对象方法,而dll和客户端exe拥有不同的heap,所以在跨跃dll边界时,像处理对象析构的代码无法正常工作(如:由客户端release   dll的heap中的创建的对象),下面是引用msdn中的一段话,可作说明:  
  The   “local”   heap   refers   to   the   heap   created   and   managed   by   a   particular   instance   of   the   C   run-time   library.   If   a   dynamically   linked   library   (DLL)   contains   a   static   link   to   the   run-time   library,   then   it   has   its   own   instance   of   the   run-time   heap,   and   therefore   its   own   heap,   independent   of   the   application’s   local   heap.    
  Top

4 楼gorge_an(木头)回复于 2001-08-10 15:01:02 得分 2

我想为什么要用map   的引用呢?   用指针可不可以?(stl   我不是很懂)答错了可要见笑了。  
  但是写dll的时候是可以用stl的。我现在手上的工程中就是用到了的。Top

5 楼xiterator(xi)回复于 2001-08-10 16:24:31 得分 0

我也不是很清楚stl,只是谈谈:不是不可以在dll中使用stl,而是尽量不要在导出函数中涉及stl的代码,以免混用dll和exe两方的heap。Top

6 楼xiterator(xi)回复于 2001-08-10 16:29:48 得分 0

我也不是很清楚stl,只是谈谈自己的想法:不是不可以在dll中使用stl,而是尽量不要在导出函数中涉及stl的代码,以免混用dll和exe两方的heap,所以用map指针也不推荐,因为若在dll方往map中增加item(其中自会在dll的专有heap中new对象),那么在exe   release   map时就会出现问题.Top

相关问题

  • STL过来看一看,我能给的分全在这里了!
  • 大家给看一看!
  • 谁有asc码表给我看一看。
  • 熟悉fastreport的朋友进来看一看
  • 熟悉多线程的朋友这边看一看
  • 熟悉ACE的朋友进来看一看?
  • 熟悉ACE的朋友进来看一看?
  • 大家来看一看,解决问题后马上给分
  • 谁用操作员权限表,能发给我看一看吗?
  • 大家请看一看,问题在哪里?(up给分^_^)

关键词

  • stl
  • dll
  • 函数
  • 代码
  • 客户
  • heap
  • 对象
  • 使用
  • library
  • map

得分解答快速导航

  • 帖主:geobean
  • myan
  • xiterator
  • gorge_an

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo