vs2010调试内存泄露 a CMFCVisualManager object at $01481660, 200 bytes long

ExitInstance 成员函数
 
每当应用程序的副本终止时(通常是因为用户退出应用程序),都调用 CWinApp 类的 ExitInstance 成员函数。

如果需要进行特殊的清理处理(如释放图形设备接口 (GDI) 资源或释放程序执行期间使用的内存),请重写 ExitInstance。但文档和视图等标准项的清理工作由框架提供,其他可重写函数将用于特定于那些对象的特殊清理工作。

 

在你的CXXXApp类“属性”的“重写”里面~

 

在调试程序出现内存泄露:
Detected memory leaks!
Dumping objects ->
{914} client block at 0x01481660, subtype c0, 200 bytes long.
a CMFCVisualManager object at $01481660, 200 bytes long



到网上搜索了一下,找到了答案。原因在于VS2008中MFC程序中的应用程序类都派生自CWinAppEx,VS 2008的程序里有一个CMFCVisualManager类的全局对象,负责管理可视化界面,具体来说就是一个单件(设计模式中的单件模式),CWinAppEx类的ExitInstance函数可以析构这个对象。但是以往的MFC程序的应用程序类都派生自CWinApp,因为需要在ExitInstance函数手动这个类对象,具体就是在应用程序类的ExitInstance函数添加代码

 

CMFCVisualManager::DestroyInstance( TRUE );

如果您是在使用MFC应用程序向导创建Windows桌面应用程序的话,可以通过以下步骤添加封面和进入下一步按钮: 1. 在资源视图中添加一个对话框资源,命名为IDD_WELCOME_DIALOG。 2. 在对话框中添加您想要显示的文本和图片。 3. 添加一个“下一步”按钮控件,并将ID设置为IDOK。 4. 在您的应用程序主框架类(通常是CMainFrame类)中添加以下代码: ```c++ #include "WelcomeDlg.h" // 包含对话框头文件 // ... BOOL CMainFrame::InitInstance() { // ... // 创建欢迎对话框 CWelcomeDlg dlg; dlg.DoModal(); // ... return TRUE; } ``` 5. 创建一个CWelcomeDlg类,并添加以下代码: ```c++ #include "WelcomeDlg.h" #include "resource.h" BOOL CWelcomeDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置对话框图标 SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), TRUE); return TRUE; } void CWelcomeDlg::OnOK() { // 关闭欢迎对话框 CDialogEx::OnOK(); } ``` 6. 在您的应用程序头文件(通常是stdafx.h)中添加以下代码: ```c++ #include "WelcomeDlg.h" ``` 7. 在资源视图中添加一个菜单资源,并将ID设置为IDC_MYAPP。 8. 在您的应用程序主框架类中添加以下代码: ```c++ BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) // ... ON_COMMAND(IDC_MYAPP, &CMainFrame::OnWelcome) END_MESSAGE_MAP() void CMainFrame::OnWelcome() { // 创建欢迎对话框 CWelcomeDlg dlg; dlg.DoModal(); } ``` 9. 在您的应用程序主框架类的构造函数中添加以下代码: ```c++ // 加载菜单资源 CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); LoadMenu(IDR_MAINFRAME); ``` 现在,当您的应用程序启动时,将会显示欢迎对话框。当用户点击“下一步”按钮时,对话框将会自动关闭,然后您可以在菜单栏中添加一个菜单项,以便用户重新打开欢迎对话框。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值