请问用new开辟了内存空间后,如果后来不用delete,就一定会造成内存泄露吗?
解决方案 »
- 要辞职了~!心里滋味很复杂...
- 请教一个菜鸟问题
- WaitForSingleObject和CreateThread在dll中的初始化里运行的问题,急!!!!!!
- vc怎样读取html的东西并显示
- 求CListView中取得列数的函数
- 求msdn library 6.0 的有效下载,万分谢谢!!
- listcontrol控件问题?
- 安装VISUAL STUDIO.NET过程中叫我插入光盘CHS DISK1
- 各位大哥大姐们,帅哥靓妹们,行行好了,UP就有分啊。
- 如何在edit控件中显示英文音标
- 如何用VC写个程序直接与HID USB设备数据通讯
- #include "..\OLEDBErrorChecking\OLEDBErrorChecking.h"怎么回事?
非托管环境是这样滴,
如果是托管环境可以不需要显式的释放内存,Framework会处理的。
void CView::PostNcDestroy()
{
// default for views is to allocate them on the heap
// the default post-cleanup is to 'delete this'.
// never explicitly call 'delete' on a view
delete this;
}
有次,我的controlBar里放了CView派生类对象,要不得,不得不换成了指针,用new创建,然而却不能用delete。
new-delete
malloc-free
GetBuffer-ReleaseBuffer
// never explicitly call 'delete' on a view也不是很能看的懂,主要是为什么?
它想说的意思无非就是外界或者自己内部不要delete这个view的指针hWnd,即使你获得了.
而是要通过view的成员函数来执行 delete this,来delete才可以.
那如果你想delete一个view ,调用它的PostNcDestroy()方法就可以了.它自己delete.
(如果这个view 是你自己new 的,但不调用delete,心理肯定会有不爽的感觉,因为自己写的代码的new 和delete没配对,呵呵).至于为什么外界不能delete,只能由它的成员函数来执行delete this.就不知道了.MFC在这里想表明什么,我也没看懂.估计框架原因 约束的吧.
new 和delete配对 // 原则..!
----------
指针、内存管理问题能说自己很精通的该不多..