Allocator 是 Zig 標準庫提供的功能,用來分配記憶體,尤其是涉及動態分配的情況。
Page
最基本的是 Page Allocator,使用 std.heap.page_allocator
取得 Allocator,再使用 .alloc(T, L)
分配記憶體空間,其中 T
是型別,L
是長度。記得要使用 defer
和 .free()
來處理資源的釋放。
Fixed
如果你需要從 stack(或 static)分配記憶體,而不想從 heap,可以使用 FixedBufferAllocator
。
General Purpose
GeneralPurposeAllocator
是一個通用分配器,它是一個注重記憶體安全的分配器,會防止雙重釋放(double free)、釋放後使用(use after free),還會偵測記憶體泄漏(leak)。透過配置可以達成線程安全或關閉檢查。當一個區塊的記憶體不再使用時,會自動歸還。
大部分的情況下它應該都能勝任。
Arena
ArenaAllocator
接受一個子分配器,讓你可以多次分配,但僅釋放一次。
參考
本文以 Zig 0.13.0
為主。並同時發佈在:
留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)