在c中,只要用malloc分配的内存没有用free返回,就会产生内存泄露

C语言 码拜 6年前 (2015-05-11) 253次浏览 0个评论
 

这句是什么意思?内存泄露有何危险?还有其他操作可以引起内存泄露吗?

6分
用malloc而没用free,用一次就丢失一块内存。刚开始时系统的内存充足,你看不到错误。终有一次程序突然死掉,系统出现提示:内存耗尽。动态内存的申请与释放必须配对,程序中malloc 与free 的使用次数一定要相同,否则肯定有错误(new/delete 同理)。
7分
1.当你malloc一块内存后,系统将其认为已经被使用,也即其它程序无法再使用它,因此当你使用完后应当free释放.
2.至于有没有危险,具体要看你的程序.如果循环malloc而缺少free的话最后将会导致内存不足而崩溃;如果只是运行一次而量很少的话一般不会有什么危险,但分配后要释放这是良好的编程习惯,因此要尽量避免内存泄漏.
3.与此相对应的还有new后的delete.
绝对要free!!
同意楼上二位!
还是使用静态内存的好
dos下面好像没有内存泄露这个讲法反正会消耗内存。
内存泄露的意思是否是,本已不使用的内存,但没释放掉,致使系统无法使用它!
这就是这一段内存泄漏!对吗??????
zhang1000(多一个零) || denny97104(丹尼) 能否我解释一下
内存泄露的意思是否是,本已不使用的内存,但没释放掉,致使系统无法使用它!
  这就是这一段内存泄漏!对吗??????
7分
在UNIX中,程序中止时会自动释放占用的资源,包括内存。而在Windows下这个基本的功能很难被正确地实现。如果一个应用程序申请了内存,使用完成后没有调用free释放,则在此应用程序运行期间,其他的进程无法使用这块内存。此时称这块内存泄漏。在一般短时间运行的程序,这种泄漏没有什么危险,因为在程序中止时,操作系统回收了这个程序使用的内存。而在长时间运行的程序特别是服务程序,如果不断有使用完成的内存不释放,则这些不释放的内存回逐渐累积,系统拥有的内存逐渐减少,最后直到系统没有空闲内存可供分配,造成系统崩溃。不够在现代的操作系统中,可以通过设置进程使用的最大内存来限制单个进程对内存的需求总量,防止系统崩溃。
上面有几个错别字:
则这些不释放的内存会逐渐累积
不过在现代的操作系统中
hewlkfd() (  ) 
UNIX不用吗?LINUX好象需要释放吧。
你一共有100块钱,你只是花,没有赚,当然不久就花完了.
内存也是一样的,借来用了不还,很快就借完了.没得借了
不用FREE你会死的很残的,程序死了都不知道怎么会死的!一定要记住!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在c中,只要用malloc分配的内存没有用free返回,就会产生内存泄露
喜欢 (1)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!