[過去ログ] Rust part24 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
399
(4): デフォルトの名無しさん [sage] 2024/06/27(木) 11:20:07.91 ID:veLj9zg3(1/4) AAS
よくわかんないんだけどスタック上に確保したメモリの所有権を外に移して関数は終了してスタックが縮んじゃうとかさ
「そんなわけないだろ」って思うんだけど
401
(1): デフォルトの名無しさん [sage] 2024/06/27(木) 12:00:05.74 ID:TDzAch9x(3/6) AAS
>>399
関数が値を返す場合にサイズが小さければレジスタで返す
サイズが大きい場合は呼び出し元のスタックフレームに領域を確保してそこへ直接書き込んでいる
つまり暗に可変参照を渡す最適化が行われている
それはサイズの大きい値を返す関数呼び出しが多段でも同じなので一番最初の関数のスタックフレームに直接書き込まれる
402
(1): デフォルトの名無しさん [sage] 2024/06/27(木) 12:27:57.71 ID:OTNDZ+yC(4/4) AAS
>>399
>「そんなわけないだろ」
その感覚は正しい
Rustを広めたいために勢い余ってデマを流してる香具師が一定数いる

>>401 が正しい
403: デフォルトの名無しさん [sage] 2024/06/27(木) 12:45:47.11 ID:VTKaeii9(1/2) AAS
>>399
>よくわかんないんだけどスタック上に確保したメモリの所有権を外に移して関数は終了してスタックが縮んじゃうとかさ
これ自体なにを言いたいのかよくわからんけど
その前にそんなこと言ってるやつおる?

>>400
400(1): デフォルトの名無しさん [sage] 2024/06/27(木) 11:56:53.85 ID:TDzAch9x(2/6) AAS
>>395
スタックフレーム同士も連続しているし
レジスタ退避でアクセスしているし
他のローカル変数もスタック上にありアクセスしているから
スタック上に確保すればキャッシュ上にある
>スタック上に確保すればキャッシュ上にある
キャッシュから追い出される状況もあるよね
404: デフォルトの名無しさん [sage] 2024/06/27(木) 12:53:21.92 ID:TDzAch9x(4/6) AAS
>>402
いや>>399の話も正しいんだよ
重要なのはRust上の概念とその実現方法(実装)とその最適化の3つは当然異なるということ

所有権を移すとはmoveという概念であって
moveの実装はコピー(してコピー元を使わない)
ただし無駄なコピーは最適化で消える
例えば大きなサイズの構造体を関数が返す場合は呼び出し元の関数のスタックフレーム上に直接書き込まれることで無駄なコピーが発生しない
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.046s