new生成变量不释放是否会造成内存泄露

问题描述

new生成变量不释放是否会造成内存泄露

MFC中的对话框初始化函数有以下代码,
其中用new生成的东西,不释放是否会造成内存泄露?
如果会造成内存泄露,改怎样处理?
好多书上经常这么用,也没看到在哪里释放了。

 HDITEM item;
item.cxy=200;
item.mask=HDI_WIDTH;
m_propertyGrid.GetHeaderCtrl().SetItem(0, new HDITEM(item));   

CMFCPropertyGridProperty *pProp1 = new CMFCPropertyGridProperty(
    _T("普通文字"),
    _T("显示正确"),
    _T("这是描述部分"));

解决方案

mfc肯定会的。一般来说,应该在析构函数中释放变量。

解决方案二:

很多图书都是找大学生胡乱写的代码,根本不靠谱。new一定要和delete成对出现。

解决方案三:

c和c++动态生成的地址空间是不会自动释放的。
这可不是java
所以new要和delete配对
不然肯定内存泄露

解决方案四:

c++肯定要自己释放内存的,,不然肯定会泄漏的

时间: 2024-10-21 13:46:50

new生成变量不释放是否会造成内存泄露的相关文章

ai-求OC中自动生成变量名的方法

问题描述 求OC中自动生成变量名的方法 如题 求大神指导.比如 char * a1="aaaaaaaa"; char * a2="bbbbbbb"; char * a3="ccccccccc"; ............ char * an="nnnnnnn"; 变量命名规则都是char * an n值是从1到n的数字,n我知道. 问题:如何依次遍历a1到an 想要类似如下的用法 for(int i=0;i<n;i++)

关于C++ delete 来释放new分配的内存

一般在C语言中我们使用malloc和free进行内存分配和释放,但是在C++中增加了一个新的 new和delete 操作来进行,按照C++的说法delete是释放内存但是指针得到保留,防止内存 泄露,并且NEW和DELETE要成对出现.我们知道指针本生也是一个保存在内存中某个位置的变量, 如果释放了内存我们是否可以考虑为其中的值得到了删除,而指针自身可以再次指向其他的值? 而还有一点我们需要明白使用NEW分配的内存是HEAP而变量的赋值是栈, 在OS中我们大概可以理解如下(32位系统为例),我这

android-Android中静态变量(activity的副本)内存泄露的问题

问题描述 Android中静态变量(activity的副本)内存泄露的问题 具体情境是:整个APP一步一步那样会进入多个activity,类似于注册的一个一个步骤, 由于是这样我设定每个activity跳转到另外一个的时候不finish,因为要保证可以退回到上 一步,所以我弄了每个activity里面都有一个static Activity mActivity的变量在onCreate 的时候mActivity=this,这样我就可以在一个Activity里面直接取到其他activity当前的情况,

new-如何释放堆的部分内存

问题描述 如何释放堆的部分内存 int *p*q;p=new int[10];q = P+5;delete q;//如何只释放P+5 以后的内存? 解决方案 一般来说堆分配器分配一块内存时会在这块内存的头部或者尾部保存一些信息(包括这块内存的大小和指向其他内存块的指针)释放一块堆内存时需要先找到之前保存的信息. 还没有见过可以部分释放一块堆内存一般都是整块释放. 但从技术上是可以实现的. 我之前写过一个简单的堆分配器基本原理如上可以参考一下:http://blog.csdn.net/ce123_

java类的static修饰的变量,函数属于哪种内存?

问题描述 java类的static修饰的变量,函数属于哪种内存?是栈内存还是堆内存?请给个讲解链接,谢谢 解决方案 http://wenku.baidu.com/view/8775d826482fb4daa58d4b31.html

iframe如何动态创建及释放其所占内存_javascript技巧

最近参与一个项目的开发,由于项目是基于浏览器的胖客户端(RIA)应用程序,页面中大量调用iframe.后期测试发现浏览器内存一直居高不下,而且打开iframe页面越多内存占用越大,在IE系列浏览器中尤其明显.所有打开的iframe页面即使关闭了,内存使用也没有明显的下降,IE浏览器在内存占用达到400M左右就变得很卡.分析发现是iframe没有释放造成的,于是对所有已关闭的iframe所占用的内存进行释放,虽然不能完全释放,但是iframe内存占用量不会一直增长,整个应用内存使用量控制在150M

c# 调用c dll, 然后c 回调c#, 但是c# 这边变量被释放掉怎么办

问题描述 问题:我在c#传递个结构体给c的dll,然后c的dll会回调我c#里面的函数,但是发现在c的dll里面中执行到某一步,这个结构体找不到了,然后目前是c的程序里结构体释放的可能性很小,于是怀疑是c#程序这边把结构体整个释放掉了我想问下,遇到这种情况怎么办,我应该怎么避免这种情况,大神们能否给我指点一下 解决方案 解决方案二:你的问题是要找到哪里释放了,才能说怎么办解决方案三:引用1楼bdmh的回复: 你的问题是要找到哪里释放了,才能说怎么办 就在回调的时候,发现结构体找不到了.解决方案四

PHP如何销毁已经过期的变量并释放内存?unset使用方法

我们先看一个例子:  代码如下 复制代码 <?php  $s=str_repeat('1',255);  //产生由255个1组成的字符串  $m=memory_get_usage();  //获取当前占用内存  unset($s);  $mm=memory_get_usage();  //unset()后再查看当前占用内存  echo $m-$mm;  ?>  最后输出unset()之前占用内存减去unset()之后占用内存,如果是正数,那么说明unset($s)已经将$s从内存中销毁(或者

如何通过命令释放 Mac OS X 内存空间?

  Mac OS X的内存管理机制一直都是最棒的,充分利用着你机器的内存,虽然完美,但是有时候某些程序在退出后没有完全释放内存("非活跃"状态),导致可用内存较少,其实可以让 Mac OS X 强制清理那部分内存. 首先打开"终端"(应用程序->实用工具) 输入以下命令: purge 稍等片刻,你可在"活动监视器"( Activity Monitor )里面观察你内存的释放状况.