码迷,mamicode.com
首页 > 其他好文 > 详细

内存泄漏

时间:2014-10-21 10:28:08      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:c   c++   malloc   free   内存泄漏   

OS万岁

1、图书馆书架上有4096本书,其中3072本可以借阅。其余1024本,放在玻璃柜里,不能查阅

2、学生在图书馆内可以阅读3072本中的任意一本,但是必须知道它的索引号

3、自觉的同学在使用完毕后,放回原处

4、不自觉的同学在使用完毕后,没有放回原处,而是丢在阅览室内的课桌上

5、图书馆管理员定时到阅览室内收集散落在课桌上的书籍,然后放回原处

一天贪同学为了做某种统计调研,陆续从书架上取了3000本书,每次取来查阅后,丢在阅览室,结果他坐的书桌上,堆集如山!其他同学去查阅,发现无果,向管理员“告急”!管理员此时可以强制收回也可以不强制归位堆积的书籍。等贪同学离馆后,管理员把堆积书籍归位!管理员万岁!

这就是——内存泄漏^_^


万法归宗

翻译成专业术语就是

1、系统地址空间一般按照1:3比例划分,用户使用最大空间3G,OS的1G.用户不能访问操作系统的地址空间

2、用户地址空间,通过地址访问任意字节

3、有经验和素养的程序员,malloc,new后配对free,delete,自己使用,自己负责返还

4、没有经验和马虎的程序员,malloc,new后不管了,使用后,丢弃

5、OS在进程终结时候,回收所有分配的内存,以及其他资源

程序在运行过程中不停的分配内存,每次使用过后就直接丢弃不管。导致OS系统内存紧缺。必要时候OS可以强制中止程序运行(比如检测到恶意性),一般不会中止。最后在程序终结时候,回收所有资源!OS万岁


总结

在程序运行期间,程序申请了一块内存,而没有释放,且丢失了对这块内存访问的指针,那么这块内存就是泄漏了!在程序运行期间,OS一直认为这块内存用户在使用,虽然程序已经失去对它的访问方式,不能够再使用。但是OS了解不到这一点!如果程序一直分配,丢弃,分配丢弃这样迭代下去,最终OS将内存告急,引发系统恐慌,增加运行开销(交换区进行换出不使用的页,以腾出空间),甚至荡机!而等到此程序终结,所有‘丢失’的内存将全部回收!注意OS自身不会内存泄漏,若有,且你发现了,这一定是bug。恭喜你,赶快提交给内核开发人员,或者自己打补丁,可能就是一次很好的机遇!


下面两篇内存泄漏的帖子总结的不错,有兴趣的可以瞅瞅

参考1:http://blog.csdn.net/xd1103121507/article/details/7226568

参考2:http://blog.csdn.net/leishi/article/details/3450147

内存泄漏

标签:c   c++   malloc   free   内存泄漏   

原文地址:http://blog.csdn.net/cwcmcw/article/details/40320787

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!