dll中使用CString对象引起内存泄露,该怎么解决
dll中使用CString对象引起内存泄露
工程是 mfc dll,里面有1个对话框,对话框内有一个CEdit控件对应的类内变量CString m_str, dll提供一个输出接口函数,在这个函数里面实现对对话框的调用
extern "C " __declspec(dllexport) void ShowDlg( void*& pVoid, int& nLen )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CMyDlg dlg( pVoid, nLen );
dlg.DoModal();
}
调试的时候,总说,有dll内存泄露,而且,泄露指向对话框构造函数给 m_str赋值的地方
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgFSQ)
m_flt = 1000.0f;
m_str = _T( "IMM "); // 此处内存泄露
//}}AFX_DATA_INIT
}
------解决方案--------------------
m_str = _T( "IMM "); // 此处内存泄露
---------------------
如果m_str是CString类型,这个地方肯定不会内存泄露
------解决方案--------------------
CString不应该有泄露,用工具的查的应该是误报吧。
工程是 mfc dll,里面有1个对话框,对话框内有一个CEdit控件对应的类内变量CString m_str, dll提供一个输出接口函数,在这个函数里面实现对对话框的调用
extern "C " __declspec(dllexport) void ShowDlg( void*& pVoid, int& nLen )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CMyDlg dlg( pVoid, nLen );
dlg.DoModal();
}
调试的时候,总说,有dll内存泄露,而且,泄露指向对话框构造函数给 m_str赋值的地方
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgFSQ)
m_flt = 1000.0f;
m_str = _T( "IMM "); // 此处内存泄露
//}}AFX_DATA_INIT
}
------解决方案--------------------
m_str = _T( "IMM "); // 此处内存泄露
---------------------
如果m_str是CString类型,这个地方肯定不会内存泄露
------解决方案--------------------
CString不应该有泄露,用工具的查的应该是误报吧。