# ["std::allocator..."](https://www.youtube.com/watch?v=LIb3L4vKZ7U) Andrei Alexandrescu at CppCon 2015 * malloc 需要指定 size, free 卻不用? 所以 allocator 需要管理 size * Allocator = Compositions of strategies 根據不同的需求/狀況決定應該要採取哪種 allocate 策略 ## Types of common allocator * Fallback allocator 分兩個 allocator,如果 primary 失敗的話,就試試看 fallback allocator * Stack allocator * alloc/free 快速,只要操控 tos pointer 就好 * 缺點是比較沒有彈性,沒辦法 alloc A -> alloc B -> free A -> free B * Freelist 利用 linked list 來管理記憶體,減少頻繁使用 alloc/free 帶來的成本 * Affix allocator 替一段分配過的記憶體區間加上 prefix 和 suffix 作為 guard,檢測 memory 是否損毀。 * Bitmapped Block * 利用一些 bitmapped block 記錄區塊是否有被佔用 * Bitwise operation 很快 * Fragmentation issue * Multithreading issue,使用大於 1 個 block 時需要 lock * Cascading allocator * Bitmapped block 的延伸,大小不夠就合併多個 bitmapped block,再 maintain 這個 block。 * Segregator * 有 threshold 來區分要使用哪個 allocator * self-composable -> 形成 binary tree 的型式 * 需要很多**種** size 時可以使用 * Bucketizer * 類似 segregator,把一個區間分成不同 steps 的大小,使用不同的 allocator * MDFINAE: Method Definition Failure Is Not An Error
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up