这是一个 VC6 win32 dll 导出函数
void test_str_leap()
{
    std::string str;
}
使用时有内存泄露但是改成这样就没有了
void test_str_leap()
{
//      std::string str;
}
其他的代码完全相同

解决方案 »

  1.   

    第一是leak, 不是leap第二, dll 参数最好还是基本类型,因为stl容器有时会间接引用静态变量,调用时可能会有问题
      

  2.   

    string在一些实现中采用内存池等一些策略,比如创建一个对象时往往会申请一块大于对象的内存,保留而不使用
    这种情况下就有可能被工具报内存泄露的
      

  3.   


    这个还是要看提供stl的厂商是如何实现的。