//   dll   
  void   getName(std::string   &   s)   
  {   
          int   num   =   100;   
          s.insert(0,num,'a');   
  }   
    
  //   main   
  string   s;   
  getName(s);   
    
  getName做为lib没任何问题.   但做为dll会有问题.   
  因为在dll中插入100个a时,空间不够(我用的VC7缺省capacity   是15)会重新为string分配空间.   
  但这个空间是在dll的局部堆上的,和exe不是同一个.当exe退出时释放空间就出错了.因为堆的基地址是不同的.(debug     版有assert会报错,release不报错,但实际会memory   leak).   
    
  我不想让程序因为编译的形式(lib   or   dll)而去改变逻辑,有什么好办法呢?   
====================================
这是一个以前的帖子,没有得到很好的解答,我也遇到了同样的问题,希望高手帮忙。   我不希望得到 [不用std::string这样的类]这个解决办法。谢谢!在以前的帖子中有人说:可以在自己在dll里面再加一个释放的函数 。能说说怎样加这个函数吗?谢谢!