问题描述:
          动态库LIbA 里面的LIbAClass 类被动态库LibB里面的LIbBClass,LIbAClass 返回的是新创建的空字符串string 字符串 在
释放时候提示
HEAP[mainpro.exe]:
Invalid Address specified to RtlFreeHeap( 003E0000, 6AFD0A3C ) 
代码简介:
 动态库LIbA 里面的LIbAClass 类   
class LIBASHARED_EXPORT LibAClass
{
public:
    LibAClass();
    ~LibAClass();
    std::string *GetStr();
};  
#include "libaclass.h"LibAClass::LibAClass()
{
}
LibAClass::~LibAClass()
{
    std::cout<<"destory LibAClass"<<std::endl;
}
std::string* LibAClass::GetStr()
{
//如果string 为空调试时候则出现 Rltfreeheap 错误
   return new std::string("");
//如果string 不为空这不会出现 Rltfreeheap 错误
// return new std::string("abc");
} 
动态库LIbB 里面的LIbBClass 类     
class LIBBSHARED_EXPORT LibBClass
{
public:
    LibBClass();
    void TestStr();
};#endif // LIBBCLASS_H  
 void LibBClass::TestStr()
{
    LibAClass *libAClass;
    for(int i = 0;i<3;++i)
    {
        libAClass = new LibAClass  ;
        std::cout<<"11111"<<std::endl;
        std::string* tempStr = libAClass->GetStr();
        //      std::string* s =new std::string;        std::cout<<"22222"<<std::endl;        delete tempStr;//调试删除申请空间出错。        std::cout<<"33333"<<std::endl;
        delete libAClass;
        std::cout<<"44444"<<std::endl;
    }
}
 //主程序
#include <QtCore/QCoreApplication>
#include "libbclass.h"int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    LibBClass Bclass;    Bclass.TestStr();
    return a.exec();
}   
该错误需要在调试模式下才能看到。希望各位兄弟指导一下。谢谢代码
下载地址:
http://115.com/file/e7owca42