2 回答

TA貢獻1752條經(jīng)驗 獲得超4個贊
根據(jù)此提案:arena:提供內(nèi)存 arenas 的新包
arena
我們建議在 Go 標準庫中添加一個新包。arena 包將允許分配任意數(shù)量的競技場??梢詮母偧紙龅膬?nèi)存中分配任意類型的對象,并且競技場的大小會根據(jù)需要自動增長。當 arena 中的所有對象都不再使用時,可以顯式釋放 arena 以有效地回收其內(nèi)存,而無需進行一般的垃圾收集。我們要求實施提供安全檢查,這樣,如果無競技場的操作不安全,程序將在任何不正確的行為發(fā)生之前終止。
該功能已經(jīng)合并到arena下的 master 分支,可能會在 go 1.20 中發(fā)布。使用該arena
包,您可以自己分配內(nèi)存,如果不再使用則手動釋放它。
a := arena.NewArena()
defer a.Free()
tt := arena.New[T1](a)
tt.n = 1
ts := arena.MakeSlice[T1](a, 99, 100)
if len(ts) != 99 {
t.Errorf("Slice() len = %d, want 99", len(ts))
}
if cap(ts) != 100 {
t.Errorf("Slice() cap = %d, want 100", cap(ts))
}
ts[1].n = 42
- 2 回答
- 0 關注
- 349 瀏覽
添加回答
舉報