亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang 中,是否計算 unsafe.Pointer() 的引用?

在 golang 中,是否計算 unsafe.Pointer() 的引用?

Go
大話西游666 2022-10-24 09:24:52
unsafe.Pointer() 的引用是否被計數并因此被保護免于被垃圾收集?如,如果我有一個字符串,它在范圍內時存在,如果我有一個 *string,則在指針在范圍內時字符串存在,但如果我有一個 unsafe.Pointer(&s) (其中 s 是一個字符串或其他)只要不安全的指針仍然指向它,它就會留在范圍內嗎?我發現谷歌說一旦你轉換為 uintptr 肯定不是,因為 uintptr 只是一個 int,但我找不到任何關于 unsafe.Pointer() 的明確方法,可能是因為答案很明顯,但我'我不是很確定,因為我找不到任何可以準確解釋它的東西。如果我將 unsafe.Pointer 轉換為其他指針類型,我認為這不會改變事情嗎?
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

unsafe.Pointer 防止指針被收集。

此外,Golang 使用跟蹤垃圾收集器,而不是引用計數。

這沒有明確拼寫,但可以從https://pkg.go.dev/unsafe#Pointer推斷出來

該文檔介紹了一些被認為是安全的 unsafe.Pointer 使用模式。特別是,從 T1* 到指向 T2* 的指針的轉換是有效的,前提是 T2 不大于 T1 并且類型具有“等效內存布局”。

因此,從 T* 到 unsafe.Pointer 并返回到 T* 的轉換是安全的,沒有任何約束。如果 unsafe.Pointer 沒有阻止引用的對象被收集,那將是不安全的。


查看完整回答
反對 回復 2022-10-24
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號