栈和堆上的内存分配和回收

 栈上的内存,函数结束的时候这个函数用的内存自动释放;堆上的内存,你必须自己释放,否则就会一直存在,但程序退出时,操作系统会清理进程使用的所有资源,这是就会释放掉堆,堆都没了,内存自然也没了

问题在于,很多时候进程并不会马上退出,比如服务器程序一跑就是几个月,如果分配的那块代码只跑一次那还好,但通常会反复执行,那么分配出去的内存就会越来越多,而又没有机会释放,最终的结果是堆内存耗尽,再次分配失败,程序被迫退出或者耗尽系统资源被操作系统强制杀死。
posted @ 2016-08-11 15:11  drfxiaoliuzi  阅读(1661)  评论(0编辑  收藏  举报