Skip to content

folly::arena

简单的内存分配起,适合快速分配,因为分配出来的无法被系统回收,只有在 arena 释放的时候才进行回收,所以适合同生命周期,同生同死的时候进行分配。

数据结构。

ptr 指向当前指针位置,end 指向当前块的最后位置, end - ptr 就是当前块内的容量。

blocklist,bigblock list 侵入式链表实现,存当前分出来的内存。

分配

分配逻辑是,当前块能不能分配,如果不能去链表里查,链表里有没有空的可以分配,如果没有找系统要。

回收

deallocate 空实现,不做任何事。clear方法应该由用户调用,表示用完了,放回到 arena 链表里,可以被分配时候重用。

全部内存回收到系统应该指的是 arena 这个类用完了被释放的时候。