標準庫容器預設使用 std::allocator,通用但非極致優化。對於高頻、小塊、固定大小的內存分配(如節點型容器),自定義分配器可顯著提升效能。
預先分配大塊內存,按固定大小切分為塊,維護空閒鏈表。分配/釋放僅為指標操作 O(1),無系統調用開銷,減少碎片。
符合 Allocator 概念:
value_type, allocate(n), deallocate(p,n), construct, destroy, rebind。
alignas 或 std::aligned_storage 保證對齊。std::list> 。過早優化是萬惡之源。先剖析確認分配熱點,再引入自定義分配器。C++17 std::pmr::polymorphic_allocator + memory_resource 提供標準化擴展點,優先考慮使用標準設施。