Rustとか言うダブスタ言語 (173レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
110(2): 警備員[Lv.17] 2024/10/20(日)19:46 AAS
>>109
ムーブが値渡しぃ?
大量のデータわざわざコピーしてんの?
113: 2024/10/20(日)20:23 AAS
>>110
ムーブもコピーも値渡しなので関数へは基本的にレジスタ群に値を入れて渡されるよ
例えば以下の例
// ムーブされる構造体例
struct MovablePoint { x: i64, y: i64, }
// コピーされる構造体例
#[derive(Copy, Clone)]
struct CopyablePoint { x: i64, y: i64, }
ムーブとコピーの渡し方に違いはなく両者とも同じで
関数へ渡す場合はどちらも2つの64bitレジスタを使って値渡しされるよ
だから>>1さんが無知で『ムーブは参照渡しされる』と誤解をしているだけですね
114: 2024/10/20(日)20:27 AAS
>>110
雑にいえばポインタだけコピーする感じ
10万文字の文字列を扱う場合でも、大抵は文字列はヒープに確保されて、スタックにはそのアドレスや文字列長などの管理用のデータだけ置かれる
ムーブする際はその管理用のデータだけコピーするので、巨大な文字列のコピーは起こらない
ムーブした後はヒープのデータの所有権 (解放の責務も含む) がムーブ先の変数に移すので、ムーブ前の変数はそれを使えなくなる
ファイルハンドルなんかも同じで、解放などの責務を持つリソースについて気軽なコピーをさせないよう制限してる感じ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s