问题描述:
动态库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