社区
C语言
帖子详情
什么是内存泄漏?
eyoexply
2003-06-29 08:35:49
举个例子!
...全文
25
19
打赏
收藏
什么是内存泄漏?
举个例子!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
simouse
2003-06-30
打赏
举报
回复
只要有new/new []分配出的内存没有delete/delete []的都算内存泄漏
budzhang
2003-06-30
打赏
举报
回复
试着把上面hello函数里的
NewClass->~AnyClass();
换成
delete NewClass;
再看一下。
budzhang
2003-06-30
打赏
举报
回复
一般而言,在NT/2000里,一个进程终止时,系统会释放其所占用的内存。
从这个角度讲,如下定义“内存泄漏”为好:
在程序运行期间,动态分配内存空间后,在它变成不可重用的空间时没有释放它。
budzhang
2003-06-30
打赏
举报
回复
下面的程序造成了“内存泄漏”,析构函数与delete不一样。
#include <stdio.h>
#include <stdlib.h>
class AnyClass
{
public:
AnyClass(int n){M=n;};
~AnyClass(){M=0;};
private:
int M;
};
void hello();
void main()
{
int i;
puts("请看一下占用的内存");
system("pause");
for(i=0;i<1000000;i++){
hello();
}
puts("请再看一下占用的内存");
system("pause");
}
void hello()
{
AnyClass* NewClass = new AnyClass(10);
NewClass->~AnyClass();
}
Inkick
2003-06-30
打赏
举报
回复
楼上的,你的说法好像不太准确~~~~~~~
class AnyClass
{
public:
AnyClass(int n);
~AnyClass();
private:
int M;
}
void main()
{
AnyClass* NewClass = new AnyClass;
NewClass.~AnyClass();
}
这个也造成内存泄漏了吗?
zalyer
2003-06-29
打赏
举报
回复
呵呵。学习一下。
晨星
2003-06-29
打赏
举报
回复
呵呵,好像有些网友还不太明白,那就再写个没有内存泄漏的,不过挺无聊的。:)
int main()
{
int* p;
for(int i = 0 ; i < 32767 ; i++)
{
p = new int[32767];
delete[] p;
}
return 0;
}
^o^
xueqt
2003-06-29
打赏
举报
回复
嘿嘿,学习
yonk
2003-06-29
打赏
举报
回复
如果整个程序结束,分配给该程序的内存也就被系统收回。但是如果程序没有结束,一些该释放的内存块没有办法找到,就形成了泄漏。
flyswift
2003-06-29
打赏
举报
回复
在C和C++中,内存汇漏是N大个问题,不过在JAVA中根本没有这个问题,因为有一个垃圾回收的线程时刻紧跟程序,一瞅到CPU有空就回收内存.
jeff__lueny
2003-06-29
打赏
举报
回复
数据被拷贝以后,必须释放老的内存块,以便程序的其他部分在需要新的内存块时候使用.DELETE关键字NEW的对应关键字,任何由NEW分配的内存块必须用DELETE释放(如果忘记了使用DELETE,这个内存块就不能使用了,这称为内存泄露(menory leak)).
jeff__lueny
2003-06-29
打赏
举报
回复
简单的说,就是NEW了以后,没有DELETE!
overawe
2003-06-29
打赏
举报
回复
不归换吧...
zhangxiaoping
2003-06-29
打赏
举报
回复
好像不太对,堆对象的作用域使整个程序的生命期,程序结束了那几个int没有自动归还马?
idontlikenickname
2003-06-29
打赏
举报
回复
被你征用了有没有释放给系统,造成可用内存越来越少~
看起来就跟泄漏一样~~
极速小王子
2003-06-29
打赏
举报
回复
我不记得了,大概意思就是某个内存块没有了相应的程序管理了,成了一个自由的块。系统无法释放它。
Wenxy1
2003-06-29
打赏
举报
回复
上面的程序运行一次就泄露了:32767*2Byte 的内存。
只有重启操作系统,泄露的了内存才交于操作系统管理。
fullsail
2003-06-29
打赏
举报
回复
就是你向系统的申请的内存,使用完了没有还给系统,系统迟早要找你要帐。(内存不足。)
晨星
2003-06-29
打赏
举报
回复
int main()
{
int* p;
for(int i = 0 ; i < 32767 ; i++)
p = new int[32767];
return 0;
}
Android 内存溢出和
内存泄漏
的问题
什么是
内存泄漏
?怎么避免?”通过这篇文章,你可以回答出来了。 内存溢出 (OOM)是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如只申请了一个integer,但给它存了long才能存下的数,那...
内存泄露Demo leaky app
内存泄露Demo leaky app
C++第3课:C++内存泄露检测原理及案例实战
本课程具体的内容主要包括C++内存泄露案例、VS2015内存泄露检测、野指针、VirtualAlloc/HeapAlloc/malloc/new的区别、C++堆和栈的内存管理、栈简介、堆简介、堆与栈区别、栈的内存分配、Windows的虚拟内存技术、...
性能优化:
内存泄漏
例子2
往往做项目的时候情况非常复杂,或者项目做得差不多了想起来要性能优化检查下内存泄露。 如何找到项目中存在的内存泄露的这些地方呢?
vs2010内存泄露检查工具
vs2010的c++内存泄露检查工具,可定位到出错代码行、开源免费工具。
C语言
69,372
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章