此篇文章就从以下几个方面出发,带你了解智能指针的方方面面
1.为什么需要智能指针
当我们开辟内存并使用的时候,我们的顺序应该是这样:
开辟内存-》使用内存-》释放内存
问题就出现在第三步,开辟好了,也使用了,但是释放的时候出现了问题,可能是malloc没有释放,也可能是抛异常之后跳过了回收,不管怎样,此时就会发生内存泄漏。
2.内存泄漏之后
内存使用空间的减小,运行卡顿,死机等。
内存泄漏可以分为:
堆内存泄漏(Heap leak) 堆内存指的是程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存, 用完后必须通过调用相应的 free或者delete 删掉。假设程序的设计错误导致这部分内存没有被释放,那 么以后这部分空间将无法再被使用,就会产生Heap Leak。
系统资源泄漏 指程序使用系统分配的资源,比方套接字、文件描述符、管道等没有使用对应的函数释放掉,导致系统 资源的浪费,严重可导致系统效能减少,系统执行不稳定。
解决办法(知道即可)
通过内存泄漏的一些检查工具,这里可以参考其他博客,此篇不做详解。
3.如何避免内存泄漏
1. 工程前期良好的设计规范,养成良好的编码规范,申请的