folly::arena
简单的内存分配起,适合快速分配,因为分配出来的无法被系统回收,只有在 arena 释放的时候才进行回收,所以适合同生命周期,同生同死的时候进行分配。
数据结构。
ptr 指向当前指针位置,end 指向当前块的最后位置, end - ptr 就是当前块内的容量。
blocklist,bigblock list 侵入式链表实现,存当前分出来的内存。
分配
分配逻辑是,当前块能不能分配,如果不能去链表里查,链表里有没有空的可以分配,如果没有找系统要。
回收
deallocate 空实现,不做任何事。clear方法应该由用户调用,表示用完了,放回到 arena 链表里,可以被分配时候重用。
全部内存回收到系统应该指的是 arena 这个类用完了被释放的时候。