https://blog.csdn.net/lf_2016/article/details/53511648
https://blog.csdn.net/yhhwatl/article/details/52538843
https://blog.csdn.net/hujian_/article/details/51063935
https://blog.csdn.net/chenjiayi_yun/article/details/26178809
https://blog.csdn.net/effective_coder/article/details/8991980
http://www.voidcn.com/article/p-zoldlivm-bcq.html
https://blog.csdn.net/hujian_/article/details/51100463
https://blog.csdn.net/bit_clearoff/article/details/53507613
https://blog.csdn.net/bit_clearoff/article/details/53503846
https://www.cnblogs.com/lang5230/p/5556611.html
https://blog.csdn.net/qq_26768741/article/details/70477766
https://blog.csdn.net/qq_33951180/article/details/70239745
https://blog.csdn.net/virgofarm/article/details/81116681
https://blog.csdn.net/SmartBrave/article/details/50909179
https://blog.csdn.net/watson2016/article/details/52415429
https://blog.csdn.net/watson2016/article/details/52415382
https://github.com/wallmamami/http
https://blog.csdn.net/Watson2016/article/details/52415487
https://blog.csdn.net/qq_36110777/article/details/73556838
project 1:模拟空间配置器
https://blog.csdn.net/lf_2016/article/details/53511648
https://blog.csdn.net/qq_42606051/article/details/82111108
项目背景:
1)小块内存带来的内存碎片问题
单从分配的角度来看。由于频繁分配、释放小块内存容易在堆中造成外碎片(极端情况下就是堆中空闲的内存总量满足一个请求,但是这些空闲的块都不连续,导致任何一个单独的空闲的块都无法满足这个请求)。
2)小块内存频繁申请释放带来的性能问题。
开辟空间的时候,分配器会去找一块空闲块给用户,找空闲块也是需要时间的,尤其是在外碎片比较多的情况下。如果分配器其找不到,就要考虑处理假碎片现象(释放的小块空间没有合并),这时候就要将这些已经释放的的空闲块进行合并,这也是需要时间的。
3)小块空间太多会造成空间的浪费
每一次malloc 函数开辟出一块堆空间 在返回的指针前几个字节保存了开辟空间的大小。 这样free(&