Go language part 6 (70レス)
Go language part 6 http://mevius.5ch.net/test/read.cgi/tech/1747750228/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
35: デフォルトの名無しさん [sage] 2025/06/15(日) 00:24:06.66 ID:lIZk6VUi >>26 >単なる循環参照(親→子→親で、まとめて廃棄可能=寿命が同一のオブジェクト間の相互参照…Rustでも楽勝) 親→子→親の構造を表現するためにはRc/RefCell/WeakRefの組み合わせみたいなのが必須 何も気にせず全自動でやってくれる言語と比べれば相当面倒くさいよ 要は前者でも後者でも基本同じ >A->Response >B->Response これがAがResponseを参照している、BがResponseを参照しているの意味なら AやBより先に他の誰かがResponseを生成して所有しているはずで その誰かはAやBより長生きするんだから何の問題もないよ Rustだからといって面倒くさくなるパターンでもない http://mevius.5ch.net/test/read.cgi/tech/1747750228/35
37: デフォルトの名無しさん [sage] 2025/06/15(日) 01:14:15.92 ID:757F+le4 >>35 > 親→子→親の構造を表現するためにはRc/RefCell/WeakRefの組み合わせみたいなのが必須 それがarenaで簡単になるらしいぞ、詳しくは知らんが > これがAがResponseを参照している、BがResponseを参照しているの意味なら そうだが、 > AやBより先に他の誰かがResponseを生成して所有しているはずで これはその下のCの話になってる 問題が起きるケースは、 A->Response のオブジェクトAがあり、 オブジェクトBにもResponseの参照が欲しくなったので、B->Responseをつけようとするが、 この際に、元のAと追加するBのオブジェクトの寿命が別々に管理されており、どちらが長いか判断できない場合 だから上位なりで確実にAとBの寿命を内包する階層や > 他の誰か を作り、それで管理するという話 Rustのコードなんて書けんし、Goでも怪しいからJSで書いておくと、(この辺正確にしておかないと余計に混乱するだろうから) function add_ref(A,B){ B.Response = A.Response; return [A,B]; // 2値返し } とBにAのプロパティをコピーするだけのマヌケな関数で、AもBも所有権を渡された場合に、書きようがないだろ だからおそらく上位でこういうことがないように対応するはずだが ただ調べてたら Leakpocalypse が2015年に発見されて、それ以来「Rustではメモリリークは防げません」になってるようだな まあ俺はRustは死ぬと見てるし、ザマアとしか思えないが (Rustの方法でメモリ管理するのは無理だと思ってる) http://mevius.5ch.net/test/read.cgi/tech/1747750228/37
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s