一、概念:
memory leak---内存泄漏:是指程序申请内存空间后,无法释放。然而,内存泄漏不断叠加会导致系统把内存花完,以致于发生内存溢出。(用了不还)
out of memory---内存溢出:是指程序申请的内存空间>系统能提供的内存空间。如:你申请了integer来装long才能装下的数,发生内存溢出。(用了不够用)
二、内存泄漏
包括4种:
1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。
2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。
3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。如:在构造函数new,而没有在析构函数delete。
4. 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。(危害性则非常大,因为更难被检测到)