CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

C内存释放问题

楼主heasebyy(heasebyy)2006-03-17 16:27:28 在 C/C++ / C语言 提问

一直以来内存释放的概念比较模糊,  
  什么情况下要进行内存释放?C没有自动释放功能吗?  
  字符串变量需要释放内存吗?如果不指定(如:malloc)分配内存是不是就可以不考虑释放的问题?  
  指定和不指定内存分配有什么区别?  
  有没有相关的资料或者书来系统地了解一下这方面的知识  
  能否推荐本书?  
  问题点数:20、回复次数:8Top

1 楼ydfivy(我就是一送外卖的)回复于 2006-03-17 16:34:11 得分 3

malloc分配的内存是在堆上.在进程关掉之前,是不会被释放的.必须手工free  
  而一般在函数内定义的变量是在栈上.在函数退出后会被自动释放的.  
  全局和静态变量,只要你的进程是在MAIN正常返回.也会被运行期函数释放掉.  
   
  很多书上都有的.你用GOOGLE找一找就行了.网上有很多呢.比看书还快.呵呵.Top

2 楼wzd268(九霄之鹏)回复于 2006-03-17 16:37:34 得分 1

呵呵   楼上正解  
   
  这个东西看网上文章就可以了Top

3 楼ugg(逸学堂(exuetang.net))回复于 2006-03-17 16:41:13 得分 3

只用通过malloc申请的内存才需要释放free,而无论申请的是char,int等。  
   
  有没有相关的资料或者书来系统地了解一下这方面的知识  
  能否推荐本书?  
  至于说这个,几乎每本讲C的书都会提及。Top

4 楼jinjiajie(leorio)回复于 2006-03-17 16:55:19 得分 1

...反正你NEW几个就DELETE几个,MALLOC几个就FREE几个,呵呵,只要有相对的释放函数就全用上,亏不了...Top

5 楼iamcaicainiao(老菜,长征)回复于 2006-03-17 17:05:17 得分 1

up一把Top

6 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-03-17 17:21:03 得分 5

Q:什么情况下要进行内存释放?C没有自动释放功能吗?  
  A:对于那些通过malloc/calloc/realloc分配的,且你不想再使用的内存需要你手工调用free释放。   C只对临时变量进行释放,即在函数中定义的。  
  注:所有被分配的内存空间,在程序退出后,都会自动释放(win32/Linux/Unix/...)  
   
  Q:字符串变量需要释放内存吗?如果不指定(如:malloc)分配内存是不是就可以不考虑释放的问题?  
  不需要。   是。  
   
   
  Q:指定和不指定内存分配有什么区别?  
  区别在于你的设计和实现需要。对于那些程序生命期内一直有效的内存,如果确定其大小,可以用全局数组,否则使用malloc/calloc分配,如果只需要在函数内部临时使用,如果需要的内存不是很大(   <   1024   Bytes,根据你的操作系统有关),可以使用临时变量数组(除非你有很大的栈),其他的都用malloc/calloc分配。  
   
   
  Q:有没有相关的资料或者书来系统地了解一下这方面的知识  
  能否推荐本书?  
  不知道。   无法推荐。   注:用多了就知道了   :)  
  Top

7 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-17 17:43:15 得分 3

很简单,  
  需要手工释放的就是   堆   空间,  
  就是用   malloc   ,realloc   ,calloc   等函数开辟的空间。  
   
  程序在结束后,  
  这些空间也会自动释放的   ~  
   
  但是有的程序会长时间运行,  
  如果一直不释放,  
  可能会致使空间不足,  
  程序无法运行   ....Top

8 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-17 17:46:10 得分 3

指定和不指定内存分配有什么区别?  
  ----------------  
  指定的话,变量的生命期是程序员控制的,  
  你想什么时候终结它就什么时候终结   !  
   
  不指定的话   ...  
  只有眼巴巴看着了   ...  
   
  采用什么策略,  
  看实际需要   ...Top

相关问题

  • C#内存释放问题-------在线等
  • 怎样释放C#内存,在线等
  • 新手学C# ,内存释放
  • C++的STL相关内存释放?
  • 释放内存
  • 内存释放
  • 内存释放
  • 释放内存?
  • 关于内存分配与释放的问题(UNIX+ANSI C)
  • C++的风格与技巧(6) - 内存堆的释放

关键词

  • 内存
  • 函数
  • 释放
  • 分配
  • 变量
  • 指定
  • malloc
  • 需要
  • 书
  • 问题

得分解答快速导航

  • 帖主:heasebyy
  • ydfivy
  • wzd268
  • ugg
  • jinjiajie
  • iamcaicainiao
  • blh
  • jixingzhong
  • jixingzhong

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo