主题:请问各位高人:关于释放内存的疑问
Happy.T
[专家分:60] 发布于 2005-04-16 21:27:00
请问各位高人,为何每一本编程的书都要我们在分配了一块内存之后都要把它释放呢?
例如:char *p = (char *)malloc(10*sizeof(char));
free(p);
char *p = new char[10];
delete [] p;
如果我不释放内存会有什么后果?
而在win32编程中,取得设备描述表句柄hdc之后,要用ReleaseDC释放设备描述表句柄,如果我不释放会有什么后果?
在Create了一个Object或者GetObject以后,又或者是LoadMenu, LoadIcon, LoadBitmap以后,要用DeleteObject,如果我不delete会有什么后果?
回复列表 (共10个回复)
沙发
fresher [专家分:730] 发布于 2005-04-17 09:48:00
其实,你不释放创建的内存变量,也不会有太大的影响,我认为它的坏处是占用电脑的内存,使你能够使用的内存空间越来越小;另外这是一个编程的良好习惯,在c++中的构造函数和析构函数就是一个创建,一个清理。
板凳
methuselah [专家分:6840] 发布于 2005-04-17 15:44:00
一个系统,有100个程序员完成,每个程序员定义2000个变量,他们都不释放内存 ,每个变量占10字节,这个系统每分钟有5个人来用,你猜下都久会死机(10台ibm芙蕖器)
3 楼
Happy.T [专家分:60] 发布于 2005-04-17 19:54:00
methuselah兄真是一针见血啊!
4 楼
hgcwhz [专家分:60] 发布于 2005-05-09 16:29:00
正中要害呀。
5 楼
听风 [专家分:0] 发布于 2005-07-07 17:01:00
各位说得对
6 楼
vrace [专家分:3590] 发布于 2005-07-25 11:31:00
主要是 7*24 的应用程序,很快就会把机器搞得没内存。
如果嫌内存管理复杂的话,就用 .NET 吧
7 楼
Happy.T [专家分:60] 发布于 2005-08-04 00:58:00
什么是7*24 的应用程序啊?
8 楼
vrace [专家分:3590] 发布于 2005-08-23 15:17:00
一天24 小时,一周7天运行,简称 7*24
9 楼
pianpianni [专家分:20] 发布于 2005-09-09 14:09:00
.net不会出现内存泄漏吗,不过调试时的确看不到vc6时的内存泄漏提示了
10 楼
jhchinese [专家分:60] 发布于 2005-10-03 19:27:00
如果作软件的话,不注意内存释放的话,即使最后测试通过,但在用户拿到产品用了一段时间后,久而久之会因为内存不够而导致系统崩溃的!最终影响的 是产品的信誉!
我来回复