所谓内存泄漏可以理解为内存单元逐渐被无用数据占用,在cc++中,可能是由于Java中没有实现内存单元造成的,也可能是由于没有对该单元设置空引用造成的无效数据内存被分配而没有被删除,逐渐耗尽内存资源,导致系统崩溃。
内存泄漏是指在程序中间动态分配了内存,但是当程序终止时该块内存并没有释放,导致该块内存不可用,解决了问题,但是它可能会再次发生,内存泄漏与硬件无关。
内存泄漏可以分为4类:
1.存在内存泄漏的代码会被执行多次,每次执行都会造成内存泄漏。
2随机内存泄漏。导致内存泄漏的代码只会在某些情况或操作下发生。频繁和偶发是相对的。在某些情况下,随机的东西可能会变得普遍。所以测试环境和测试方法对于检测内存泄漏至关重要。
3一次内存泄漏。导致内存泄漏的代码只会执行一次,或者由于算法错误,总会有且只有一个内存块被泄漏。例如,如果在类的构造函数中分配了内存,但在析构函数中没有释放内存,则内存泄漏只会发生一次。
4隐式内存泄漏。程序在工作过程中不断分配内存,但直到结束才释放。严格来说,这里不存在内存泄漏,因为程序最终释放了所有请求的内存。但对于需要运行数天、数周甚至数月的服务器程序来说,未能及时释放内存也会导致最终耗尽所有系统内存。因此,我们将这种类型的内存泄漏称为隐式内存泄漏。