谁来帮我看看啊 我拿DLL导出C++类时,dll中只要一用CString,在用BoundsChecker检查内存时 就有好多内存泄露的地方 实在是不明白啊。
高手给解释一下啊。我的exe和dll传递参数也使用LPCTSTR传递的,exe中我也把分配的指针释放了。谁要源代码,我给谁发过去 大家帮着分析一下,在dll中也有delete this这个方法 在exe中也调用了。实在不明白啊。高手分析一下吧。dll静态链接的
高手给解释一下啊。我的exe和dll传递参数也使用LPCTSTR传递的,exe中我也把分配的指针释放了。谁要源代码,我给谁发过去 大家帮着分析一下,在dll中也有delete this这个方法 在exe中也调用了。实在不明白啊。高手分析一下吧。dll静态链接的
DLL可以提供两个接口,一个分配,一个释放,
还有就是DLL中最好不要用CString,换成char*或者LPTSTR代替
{
public:
CVirtualFun(){};
virtual ~CVirtualFun(){};
virtual void setLocDirpath(LPCTSTR locpath)=0;
virtual void setServerPath(LPCTSTR serverpath)=0;
virtual void Release()=0;
};
CString szLocalPath;class drriver:public Base
{
public:
void setLocDirpath(LPCTSTR locpath);
void setServerPath(LPCTSTR serverpath);
void Release();
friend LPVOID _stdcall CreatDownloadObject();//保证只有CreatDownloadObject才能实例化CDownLoad
private:
CDownLoad(){};
CDownLoad(const CDownLoad &);
CDownLoad& operator=(const CDownLoad &);
};
LPVOID _stdcall CreatDownloadObject()//导出函数
{
return new CDownLoad;
}
void CDownLoad::Release()
{
delete this;
}
void CDownLoad::setLocDirpath(LPCTSTR locpath)
{
szLocalPath=_T(locpath);
MessageBox(NULL,szLocalPath,"",MB_OK);
}void CDownLoad::setServerPath(LPCTSTR serverpath)
{
//dosomething
}只要定义了CString(不管用不用),boundschecker就能检测到内存泄露,死活不知为啥了。在afxtls.cpp
,tidtable.cpp,onexit.c,_file.c等等文件中。