就是分配了内存资源,但是没有及时释放,甚至程序退出的时候也没有释放。虽然 WIN32 程序在退出时 OS 回收所有的内存资源,但是如果一个程序频繁分配内存而又不释放,运行很长时间会造成程序本身和整个系统的性能受影响。防止的方法就是及时释放,但是说起来容易坐起来难,特别是程序的规模大了,有时候很难定位什么地方有内存泄漏。需要良好的编程风格、习惯和规划,但不能解决全部的问题。
解决方案 »
- xp下,user权限下CreateFile无法打开USB存储设备的问题怎样解决???
- 高分求助
- 在哪里定义结构体?
- vc中相当于 delphi的 repeat……until 的 循环语句 是哪个??
- 【华容道算法分析】
- 请教***有关ATL中使用CComboBox****
- 救我啊!线程消息问题!本来想把程序帖出来的,帖不下又搞乱了,所以再来一个
- 关于单文档顶层菜单的问题,欢迎大家讨论(热烈欢迎)
- 谁能告诉我,这个错误是怎么回事?f:\vc\com\drawlineclient\drawlline_i.c(51) : fatal error C1010: unexpected end of file while loo
- MFC中同一个界面上两个列表框显示的问题
- 如何用DDE在WINDOWS中安装程序组和程序项?
- printf??
// Includes all CMemoryState functions
CMemoryState msOld, msNew, msDif;
msOld.Checkpoint();
CAge* page1 = new CAge( 21 );
CAge* page2 = new CAge( 22 );
msOld.DumpAllObjectsSince();
msNew.Checkpoint();
msDif.Difference( msOld, msNew );
msDif.DumpStatistics();The results from this program are as follows:Dumping objects ->
{2} a CObject at $190A
{1} a CObject at $18EA
Object dump complete.
0 bytes in 0 Free Blocks
8 bytes in 2 Object Blocks
0 bytes in 0 Non-Object Blocks
Largest number used: 8 bytes
Total allocations: 8 bytes你可在多处检测,再根据结果判断。
void main(){
char *c;
c=(char *)malloc(sizeof(char)*102400000);
return;
}
{int *p;
p=new int;//lost memory here
p=net int;
delete p;
return;
}
我的印象中只有用new分配内存,才会必须要手工释放内存吧?(我指VC++中)
如果我的看法不正确,请高手指出,不胜感激.
在堆栈上不会发生的
一般用new申请内存,那么在用过之后一定要delete