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

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

對結構內字段的外部引用是否會阻止該結構被垃圾收集?

對結構內字段的外部引用是否會阻止該結構被垃圾收集?

Go
白衣染霜花 2023-07-26 13:08:47
例如,如果我有一些type A struct { B string; C int },并且我有一個func foo(a A) *string { return &a.B },并且我用 來調用它c := foo(a),則a一定會保留在上下文中直到c可收集嗎?或者,如果我定義,這會對收集func foo1(a A) *string { s := a.B; return &s }時間產生影響嗎?A
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

在第一個示例中,假設在a調用后未使用foo(a),a是可收集的,因為您a按值傳遞。該函數返回了一個指向 的副本中的值的指針a,因此a變得可收集,但在函數中創建的副本foo不可收集。

現在,如果您傳遞&afoo(a *A),則將a不可收集,因為c是指向它的指針。

您給出的第二個示例也傳遞了 的副本a,因此適用相同的參數。但是,如果您傳遞&a,然后返回一個指向來自 的字符串副本的指針a,a則該指針將是可收集的,但不是您返回的字符串,因為存在對其的引用。


查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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