请高手讲解一下:什么是内存泄漏?怎么样仿制?怎么样补救?

yrj 2001-06-08 10:45:00
...全文
122 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tina1997 2001-06-11
  • 打赏
  • 举报
回复
不是只有在内存(堆)中申请才会发生泄漏吗?
在堆栈上不会发生的
一般用new申请内存,那么在用过之后一定要delete
tina1997 2001-06-10
  • 打赏
  • 举报
回复
难道不是只有在堆中(或内除中)才会发生这种事吗?在堆栈中不会发生的
我的印象中只有用new分配内存,才会必须要手工释放内存吧?(我指VC++中)
如果我的看法不正确,请高手指出,不胜感激.
ahzhuo 2001-06-10
  • 打赏
  • 举报
回复
VC调试器会在一定程度上自动帮助你检测内存泄漏的,如果有内存泄漏发生,你会在DebugOutput窗口里看到大串大串的内存泄漏信息。
mahongxi 2001-06-10
  • 打赏
  • 举报
回复
void main(void)
{int *p;
p=new int;//lost memory here
p=net int;
delete p;
return;
}
dhzsir 2001-06-10
  • 打赏
  • 举报
回复
这就是内存泄漏。
void main(){
char *c;
c=(char *)malloc(sizeof(char)*102400000);
return;
}
ximuwa 2001-06-10
  • 打赏
  • 举报
回复
en,xiexie~~~~
treamboy 2001-06-10
  • 打赏
  • 举报
回复
一般来说是用try 进行捕捉 用 catch来进行释放就行了..具体实现就自己找书啦,,到处都有的.那是系统规定的内存泄露处理.
ydogg 2001-06-09
  • 打赏
  • 举报
回复
你申请了内存,却没有释放,不就是内存泄漏了?
如果申请了内存,去丢失了其首地址,无法在将其释放掉,也是内存泄漏。。。

如果这种情况出现的次数很多,你的可用内存就会越来越少。。。。,直到你的系统无内存可用。。。
yrj 2001-06-09
  • 打赏
  • 举报
回复
呵呵谢谢
Bound 2001-06-09
  • 打赏
  • 举报
回复
内存泄漏查找有时比较困难,这时可在有怀疑的地方,按如下方式检测。代码摘自MSDN。// example for CMemoryState::CMemoryState
// 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

你可在多处检测,再根据结果判断。
Edward 2001-06-08
  • 打赏
  • 举报
回复
就是分配了内存资源,但是没有及时释放,甚至程序退出的时候也没有释放。虽然 WIN32 程序在退出时 OS 回收所有的内存资源,但是如果一个程序频繁分配内存而又不释放,运行很长时间会造成程序本身和整个系统的性能受影响。

防止的方法就是及时释放,但是说起来容易坐起来难,特别是程序的规模大了,有时候很难定位什么地方有内存泄漏。需要良好的编程风格、习惯和规划,但不能解决全部的问题。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧