我在为一个按钮写消息响应时,动态创建一个属性页,需要分配内存,而且不能释放
void C**Dlg::OnCreatNewPage()
{
// TODO: Add your control notification handler code here
CMessageDlg* newMsgDlg = new CMessageDlg;
m_PageSheet.AddPage(newMsgDlg);
m_PageSheet.SetActivePage(newMsgDlg);
// 最后不能释放这块内存,因为后面还有用到
}那么我在响应关闭分页的按钮时,如何去释放这块指定的内存呢?
void C**Dlg::OnCreatNewPage()
{
// TODO: Add your control notification handler code here
CMessageDlg* newMsgDlg = new CMessageDlg;
m_PageSheet.AddPage(newMsgDlg);
m_PageSheet.SetActivePage(newMsgDlg);
// 最后不能释放这块内存,因为后面还有用到
}那么我在响应关闭分页的按钮时,如何去释放这块指定的内存呢?
解决方案 »
- (socket)为什么有新的客户端连接服务器时,之前的连接就会被强制关掉
- vc6.0调用vs2005编译的动态库的问题
- error C2504: 'CBitmapButton ' : base class undefined
- 怎么让对话框里的控件随着对话框的大小保持当时的位置
- 创建DLL出现的问题!
- VC怎么做出漂亮的界面,有没有这方面的书或者资料
- 关于SDK和MFC混合编程
- 树形控件如何与数据库相连!!!
- 关于应用层协议通讯的急急急问题;)!!!
- SetCapture使用的问题
- 请教:关于使用VC++实现USB通信的专业书籍有哪些,请推荐一下
- 用VS2008创建一个规则DLL(共享MFC)用到多线程的问题
添加个list成员来保存这些指针,用完先delete,然后从list中erase掉,并在最后做list清理
这是为成员变量,保存指针即可。
如果要创建多个的话可以使用链表或数组保存其对象的指针。在C**Dlg对话框销毁时释放内存即可
操作数据库,我曾经这样整过...
m_PageSheet.AddPage(newMsgDlg);
m_PageSheet.SetActivePage(newMsgDlg);在响应按钮消息时直接显示 newMsgDlg 即可,不必每次点击都创建对象;
在 C**Dlg 的析构函数中释放内存。
关于前面说放在成员变量里面,个人感觉不行,因为按钮式经常按的,按几次就NEW几次,成员变量只能保存你最后NEW出来的。如果只有一个属性页,那就保存在成员变量里面。
然后在OnDestroy()中判断指针是否为NULL
否则 销毁。
if(newMsgDlg !=NULL)
{
delete newMsgDlg ;
newMsgDlg =NULL;
}
void C**Dlg::OnCreatNewPage()
{
// TODO: Add your control notification handler code here
newMsgDlg = new CMessageDlg;
m_PageSheet.AddPage(newMsgDlg);
m_PageSheet.SetActivePage(newMsgDlg);
// 最后不能释放这块内存,因为后面还有用到
}