前言
做到一个题,要求删除链表结点后释放内存,乍一看,挺简单的,不就delete或free一下就可以了吗。调试时还是有点不一样的收获的,记录一下。
内存泄漏
就是如果开辟了内存,而没有去释放它,可能造成失去控制权而不能再使用内存,即内存泄漏。
free函数
代码片段:
1 | cout<<"before"<<maxPrev; |
运行结果:
如果使用 free(maxPrev); 释放之后,原来的数据还在。但的确是释放了,释放的意思是这个内存可以分配给人家使用,当然,人家用了之后数据就会是人家需要的内容了。
这就好比你租房子之后退了,房里留下了一些东西,其他人在来租之后,使用权是人家的,人家爱怎么布置怎么布置。
但上面存在的问题就是数据还在那,所以 free 之后,紧跟着清空。房子清空了再租给人家。