像这段代码中的m_pInput要怎样Delete??void CMainFrame::OnInputUnit()
{
// TODO: Add your command handler code here
m_currentwin=1;//录入
if(m_pInput!=NULL)
{
m_pInput->MDIActivate();
return;
} m_pInput=new CRaChildFrame();
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CInputCertView);
if(!m_pInput->LoadFrame(IDI_ICON3,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
return;
m_pInput->ShowWindow(SW_SHOWMAXIMIZED);
m_pInput->InitialUpdateFrame(NULL,true);
}
{
// TODO: Add your command handler code here
m_currentwin=1;//录入
if(m_pInput!=NULL)
{
m_pInput->MDIActivate();
return;
} m_pInput=new CRaChildFrame();
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CInputCertView);
if(!m_pInput->LoadFrame(IDI_ICON3,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
return;
m_pInput->ShowWindow(SW_SHOWMAXIMIZED);
m_pInput->InitialUpdateFrame(NULL,true);
}
解决方案 »
- unhandled错误
- [求助]关于#include问题
- 求救:在线结贴,对JPEG图像压缩
- FindFirstPrinterChangeNotification()我调用该函数,返回重叠i/0正在进行中,什么意思?
- 在线求操作系统小论文
- 有没有时时察看内存使用情况的工具?要能显示出每个进程时时占用到的内存大小,有吗?
- 怎样在XP下判断窗口和按钮样式(经典样式或XP样式)?
- 如果有一个数组,希望所有的对象都能够读取它,而只有一个特别的对象能够修改它,在程序该怎么设计和实现?
- SHFormatDrive格式化盘符操作问题,高手指教啊
- 请大家谈谈对《C++ STL(中文版)》和《STL 源码剖析》的看法
- MFC 主窗口基类继承的问题
- 为何明明include了某个类的头文件,函数声明处还是不认类?
2.CRaChildFrame::OnNcDestroy()
{
delete this;
}
{
.........
}
finally()
{
if(m_pInput)
delete m_pInput;
}否则 就 返回以前 delete
1楼的那方法我没试过!能详细说说吗?
2楼的方法试过了,不行
3楼的更不行
4楼,我就是不知道在哪,何时释放
5楼,不释放是否会有内存泄露?这是通过菜单调用FormView的代码。程序肯定会经常调用这样的代码的。
6楼,能给个思路吗?
7楼,这样做能行吗?
8楼,同上
首先,你的这个指针,只有在为NULL的时候才new的,之后就不需要new了,也就是说在程序运行期间只new出来一个
所有在进程中申请的指针,在进程退出的时候,系统都会自动的释放的,因此也不用担心占用资源的问题。
7楼,这样做好像不行。例如,我刚生成一个FormView(就是调用这段代码),然后关了。又打个这个FormView,是不是就不行了啊。都New了几次了。
我觉得应该是在FormView关闭的时候Delete,可就不知道该怎么写,也不知道写在哪个函数中。
我只是想知道这种情况要怎样才能释放掉这个指针!!
只是赋值,肯定会内存泄露。
{
delete this;
AfxGetMainFrame()->m_pInput=NULL;
}
怎么会不行呢?
1,在不在使用它的时候delete
2,如果一直要用在CMainFrame::OnDestroy或其它地方delete。
1。在CMainFrame中释放,我觉得不行。首先,在这个函数中肯定是不能Delete了。那只有在OnDestroy或析构函数中释放,但是你程序都关闭了。释放就没有什么意义了吧?本来程序关了,就会释放的吧??还有就是,程序执行过程中,void CMainFrame::OnInputUnit() 函数肯定会被关了,又被调用。这样重复!所以我觉得应该在关闭FormView的时候Delete。2。在RachildFrame,CInputCertView的OnNcDestroy()中delete this;程序都会被中断3。内存泄漏是有的(好像只在第一次New的时候会有,以后再调用这函数不会有内存开销增加。但是,程序中有很多菜单,都调用类似的代码,就会有比较多的内存泄漏了!)。我在很多能想到的地方试过Delete this,都不行
{
// TODO: Add your command handler code here
m_currentwin=1;//录入
if(m_pInput!=NULL)
{
m_pInput->MDIActivate();
return;
}
else
{
m_pInput=new CRaChildFrame();
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CInputCertView);
if(!m_pInput->LoadFrame(IDI_ICON3,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
{
delete m_pInput;
return;
}
m_pInput->ShowWindow(SW_SHOWMAXIMIZED);
m_pInput->InitialUpdateFrame(NULL,true);
delete m_pInput;
}
}
{
m_pInput->MDIActivate();
return;
}只会new一次啊
很正常啊
不用delete
除非什么时候你再也不要了,可以没事delete掉玩玩