- 在给变量分配内存时,使用堆分配类似于向一个房间中摆放家具(为变量分配内存),家具的尺寸(变量所占内存地址空间)有大有小
- 在摆放家具(分配内存)时,需要找一块足够大小的空间(内存地址范围)
- 经过反复摆放和腾挪之后,房子内摆放家具乱七八糟。到了一定时候,房子内虽然还有空间,但是分布在不同区域,没有一段连续的空间可以摆放家具(给变量分配地址空间)
- 当房子没有连续的空间摆放家具,房主(内存分配器)就需要对现有空间调整优化
与栈内存分配相比,堆更适合不可预知大小的内存分配,但是代价是分配速度慢,易形成内存碎片。堆内存分配如下: