C++ 在析构函数中delete出现内存泄露
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
/*, m_comboCode(_T(""))*/
{
m_addr = new char[128];
memset(m_addr,0,sizeof(m_addr));
}
CConfigDlg::~CConfigDlg()
{
if (m_addr!=NULL)delete []m_addr;
}
代码如上
在对话框退出,执行析构函数时,出现内存泄露,执行delete之前,m_addr地址都正常,这是什么原因? c++ 内存泄露 对话框 delete 构造
[解决办法]
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
[解决办法]
俺有些怀疑楼主是不是理解错了“内存泄露”的概念。
俺感觉楼主这个delete是非法访问内存导致程序崩溃的节奏。
[解决办法]