(收集和整理的网络资料)
有资料提到malloc效率很低,而且还会分配额外的字节用来记录内存块信息(对象的类型,大小,开始位置等等)。
尤其是频繁申请小块内存的时候,效率更低的惊人。
那么,效率低到底指的是什么?通常指的是内存使用的效率低,但是,往往程序的运行速度和开发速度更重要些。额外的字节有助于系统快速释放内存,如果没有这个额外字节,释放内存必须由自己写更复杂的代码来完成。所以,大多数时候,malloc是最好的选择。
引用:内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。。
(附网友佳作:
https://blog.csdn.net/maochengtao/article/details/8840690 为什么栈的速度比堆要快?
https://blog.csdn.net/hairetz/article/details/4141043 堆和栈的区别)