我寫了一個程序,試圖學(xué)習(xí)Go的GC。我認(rèn)為最初執(zhí)行mx變量的區(qū)域不應(yīng)該被回收,但我發(fā)現(xiàn)這個區(qū)域仍然可以通過指針訪問。我的代碼有問題嗎?func main() { fnc()}type myStruct struct { P int64 P2 int64}//go:noinlinefunc fnc() { mx := &myStruct{100,2} // mx -> 0xc00001c080 my := &myStruct{3,4} // my -> 0xc00001c090 oldmx := uintptr(unsafe.Pointer(mx)) mx = my runtime.GC() debug.FreeOSMemory() oldmxStc := (*myStruct)(unsafe.Pointer(oldmx)) fmt.Println(oldmxStc)}
為什么 GC 不收集此內(nèi)存塊
拉風(fēng)的咖菲貓
2022-08-24 18:41:14