Improving C# Memory Safety
https://devblogs.microsoft.com/dotnet/improving-csharp-memory-safety/
C# 16、メモリ安全性を強化する新たなunsafeモデルを導入へ
https://codezine.jp/news/detail/24314
C#が新unsafeでメモリ安全に Rust/Swiftへの言及も
1デフォルトの名無しさん
2026/05/24(日) 23:12:01.01ID:Q/0ls4UZ2026/05/25(月) 01:59:44.39ID:nvu762kR
C#の新たな方針がRustの真似
>>1
>> unsafeで定義された関数は、コール元が明示的にunsafeブロックで呼び出す必要があり、適切なドキュメント(/// <safety>ブロック)で安全性の契約や義務が明示される。
>> ポインタ型がシグネチャに含まれるだけでは自動的にunsafeにはせず、実際に危険な操作(例えばデリファレンス)が発生する箇所ごとに明示される形となる。
>>1
>> unsafeで定義された関数は、コール元が明示的にunsafeブロックで呼び出す必要があり、適切なドキュメント(/// <safety>ブロック)で安全性の契約や義務が明示される。
>> ポインタ型がシグネチャに含まれるだけでは自動的にunsafeにはせず、実際に危険な操作(例えばデリファレンス)が発生する箇所ごとに明示される形となる。
3デフォルトの名無しさん
2026/05/27(水) 12:45:45.72ID:WCS5U2KA 阿鼻叫喚
2026/05/27(水) 16:08:15.94ID:PZQy1Xr7
Rustの存在意義無くなっちゃったじゃん
2026/05/27(水) 18:53:08.40ID:SBCRghEW
C#はガベージコレクション方式の遅い言語
C/C++/Rustの速さや使用メモリの少なさをC#は実現できない
C/C++/Rustの速さや使用メモリの少なさをC#は実現できない
6デフォルトの名無しさん
2026/05/27(水) 20:51:34.31ID:dSJ8g9Ow >>4
んなこたーない
んなこたーない
7デフォルトの名無しさん
2026/05/30(土) 04:10:51.03ID:OeNHKzAz 関数やブロックにunsafeするだけでいいんだよ
プロジェクトにunsafe許可とか必要ない
もっと気軽にunsafe使わせろ
そもそもポインタごときでunsafeとかダメグラマかよ
プロジェクトにunsafe許可とか必要ない
もっと気軽にunsafe使わせろ
そもそもポインタごときでunsafeとかダメグラマかよ
8デフォルトの名無しさん
2026/05/30(土) 15:18:51.41ID:5fXXCMxe c#好きだけど、unsafe使いたいから使ってるわけじゃないんだよなあ
9デフォルトの名無しさん
2026/06/26(金) 15:16:52.82ID:R6afI80t2026/06/26(金) 16:42:26.29ID:+1B9IjoT
11デフォルトの名無しさん
2026/06/26(金) 22:19:01.91ID:R6afI80t やはりエアプか
2026/06/26(金) 22:24:27.32ID:maA58Mlv
ガベージコレクションは確実に遅くなる
その遅さと引き換えに他のメリットが上回るときに用いられるレアケースがある
滅多にないため通常はガベージコレクションは候補にせずに無視していい
その遅さと引き換えに他のメリットが上回るときに用いられるレアケースがある
滅多にないため通常はガベージコレクションは候補にせずに無視していい
13デフォルトの名無しさん
2026/06/27(土) 00:01:41.06ID:D69zuVLr 逐次解放が速いなんてありえねえしアリーナ使えるのは条件が限られるガベージコレクションこそが一般的で高速なメモリ管理だよ、メモリが十分にあるならGCがされないことだってあるからね遅延させて必要な時だけメモリを解放する、これよりも良い方法は存在しません
14デフォルトの名無しさん
2026/06/27(土) 00:07:39.52ID:D69zuVLr C#がCなどに比べて遅いのは仮想マシンで実行されるからでメモリの確保を大量にこなす処理はC#の方が速い、マネージメモリをまとめて確保してるからね、手動でやれば速くなるなんてのは幻想よRustもゴミ、以上
2026/06/27(土) 01:48:25.86ID:c7cFpiQD
C#が遅い理由はGCに依存しているため
16デフォルトの名無しさん
2026/06/27(土) 02:00:33.11ID:YqZxmVSt 数字出さずに感想文だけ書くやつは無能
2026/06/27(土) 02:04:32.43ID:ID3kKpvp
2026/06/27(土) 02:15:41.04ID:ZhnlnZJx
メモリが十分にあってGCが発動しなくても、GC言語は各種ベンチマークで、なぜC/C++/Rustに勝てないのか?
その理由は、GC言語はGCできるようにメモリ管理をせざるを得ないためだ。
その理由は、GC言語はGCできるようにメモリ管理をせざるを得ないためだ。
19デフォルトの名無しさん
2026/06/27(土) 08:40:51.74ID:D69zuVLr >>16
あなた無能ってことですやんwww
あなた無能ってことですやんwww
20デフォルトの名無しさん
2026/06/27(土) 14:22:36.42ID:i5PSImc0 それってあなたの感想ですよね
21デフォルトの名無しさん
2026/06/27(土) 18:35:33.80ID:vL0XygNT >>14
手動とはどういう意味でしょう?
例えばそのRustで構造体のオブジェクトを作るとすると
その値を格納する変数はスタック領域に確保されます
そのメモリ割り当て解放コストは他のローカル変数とまとめてスタックポインタを加算減算するだけでコストは最小
これら自動ですので手動ではありません
手動とはどういう意味でしょう?
例えばそのRustで構造体のオブジェクトを作るとすると
その値を格納する変数はスタック領域に確保されます
そのメモリ割り当て解放コストは他のローカル変数とまとめてスタックポインタを加算減算するだけでコストは最小
これら自動ですので手動ではありません
22デフォルトの名無しさん
2026/06/27(土) 18:38:11.62ID:vL0XygNT ではその構造体オブジェクトを作る関数が先ほどの変数>>21へ値を返す時はどうなるでしょうか?
その値が小さければレジスタで返されます
その値が大きければ自動的に先ほどのスタック上の変数のアドレスが関数へ渡されてダイレクトに返す先の変数に値が書き込まれます
このようにオブジェクトの値のやりとりコストも最小
そしてこのオブジェクト作成関数ではオブジェクトのメモリの確保が不要
これらも自動ですので手動はありません
その値が小さければレジスタで返されます
その値が大きければ自動的に先ほどのスタック上の変数のアドレスが関数へ渡されてダイレクトに返す先の変数に値が書き込まれます
このようにオブジェクトの値のやりとりコストも最小
そしてこのオブジェクト作成関数ではオブジェクトのメモリの確保が不要
これらも自動ですので手動はありません
23デフォルトの名無しさん
2026/06/27(土) 18:40:24.54ID:vL0XygNT 最後に変数>>21に格納された構造体オブジェクトの値を用いる他の関数を呼び出す時はどうなるでしょうか?
不変参照(書き換え不可)か可変参照(書き換え可能)を関数へ渡します
先ほどのスタック上の変数のアドレスがレジスタに格納されて関数へ渡されるだけでコスト最小です
以上ここまでメモリの割り当てと解放のコストは最初のオブジェクト格納変数のためのスタックポインタの加算減算しか生じていないです
だから速いのです
不変参照(書き換え不可)か可変参照(書き換え可能)を関数へ渡します
先ほどのスタック上の変数のアドレスがレジスタに格納されて関数へ渡されるだけでコスト最小です
以上ここまでメモリの割り当てと解放のコストは最初のオブジェクト格納変数のためのスタックポインタの加算減算しか生じていないです
だから速いのです
2026/07/01(水) 23:53:23.48ID:xfe/unY1
2026/07/02(木) 00:01:31.02ID:bbwDIcek
>>21-23
複数の点で間違っている
まず、ランタイムが管理するのではなくソースコードで利用されている場所や解放のタイミングを定めることを「手動管理」と呼ぶのであり、Rustは手動管理を行う言語である
また、メモリ割り当てコストはスタックポインタの加算のみではなく、OSによる処理が介在するしこちらの方がはるかに重い、しかもGCの話と何の関連性もない
メモリがどこから参照されていてどの時点で利用されなくなったか、管理する処理を全てランタイムが実行時に行うのがGCである
参照カウンタによる管理(ARC, ORC)のような中間の機能を備えた言語も存在するが、いずれにせよGCは管理コストが重いことは確かである
複数の点で間違っている
まず、ランタイムが管理するのではなくソースコードで利用されている場所や解放のタイミングを定めることを「手動管理」と呼ぶのであり、Rustは手動管理を行う言語である
また、メモリ割り当てコストはスタックポインタの加算のみではなく、OSによる処理が介在するしこちらの方がはるかに重い、しかもGCの話と何の関連性もない
メモリがどこから参照されていてどの時点で利用されなくなったか、管理する処理を全てランタイムが実行時に行うのがGCである
参照カウンタによる管理(ARC, ORC)のような中間の機能を備えた言語も存在するが、いずれにせよGCは管理コストが重いことは確かである
26デフォルトの名無しさん
2026/07/02(木) 16:41:43.90ID:uhOY6xpy >>24
バカ乙
メモリがリンゴだとする
リンゴを収穫する時に1個ちぎって1個ずつ運ぶより何個もちぎって箱に入れてまとめて運んだ方が速いだろ、箱を管理するコストが増えるが運ぶコストが減るから結果的に速くなるわけ
バカ乙
メモリがリンゴだとする
リンゴを収穫する時に1個ちぎって1個ずつ運ぶより何個もちぎって箱に入れてまとめて運んだ方が速いだろ、箱を管理するコストが増えるが運ぶコストが減るから結果的に速くなるわけ
2026/07/02(木) 17:58:33.20ID:CnMkjRrm
>>25
あなたの理解が不足している
それらに書かれていることを別の表現にすると
『Rustはスタック上にオブジェクトなどの値を置いたまま他の関数でも安全に扱える』
メモリの確保と解放はスタックポインタの増減のみなので最も高速で正しい
そしてその関数を抜けると自動的に解放されるから「自動管理」で正しい
一方でベクターなど複数個の大きな領域を必要とする場合はもちろん自動的にヒープ領域にまとめて確保されてまとめて解放される
Rustはそこでも手動解放は必要なくて基本はそのベクターを宣言した関数を抜けると自動的に解放されるから「自動管理」で正しい
関数の返り値として返せば解放されずに上位の関数に移るが返り値として返すことはGC言語でも同じく行なう自然な行為なのでそれが手動管理と呼ばれることはない
あなたの理解が不足している
それらに書かれていることを別の表現にすると
『Rustはスタック上にオブジェクトなどの値を置いたまま他の関数でも安全に扱える』
メモリの確保と解放はスタックポインタの増減のみなので最も高速で正しい
そしてその関数を抜けると自動的に解放されるから「自動管理」で正しい
一方でベクターなど複数個の大きな領域を必要とする場合はもちろん自動的にヒープ領域にまとめて確保されてまとめて解放される
Rustはそこでも手動解放は必要なくて基本はそのベクターを宣言した関数を抜けると自動的に解放されるから「自動管理」で正しい
関数の返り値として返せば解放されずに上位の関数に移るが返り値として返すことはGC言語でも同じく行なう自然な行為なのでそれが手動管理と呼ばれることはない
2026/07/06(月) 14:44:28.59ID:wKirmoVj
>>26
GCはまとめてメモリを消し飛ばす機能ではなくて、一つずつ使用状況を確認して使ってないものを解放する機能なので君の理解が100%間違ってるだけだね
GCはまとめてメモリを消し飛ばす機能ではなくて、一つずつ使用状況を確認して使ってないものを解放する機能なので君の理解が100%間違ってるだけだね
2026/07/06(月) 14:51:17.40ID:wKirmoVj
>>27
それはRAIIが何かわかっていないから起こる勘違いだね
単にC言語では free() と書けばメモリが解放されるのと同じく、Rustでは何もせずにスコープの末端まで来ればメモリが解放されるだけ
スコープの末端に必ず free() が挿入されるだけなので、これを自動管理と言うならこの世に手動管理は存在しない
そうなると、手動管理が存在しないのに、自動管理という言葉を使う君がおかしなことを言っていることになる
これは矛盾だね
私が言っているのはそれとは違って、ソースコードであらかじめメモリを解放する位置を明示し、また参照・借用や所有権、ライフタイムといったメモリ管理について常にプログラマが制御する必要がある方式のことを「手動管理」と言っている
GCにはこのようなことはなく、メモリは全てランタイムが実行時に管理するため、ソースコード上に解放される位置は書かれていないし、プログラマもメモリ管理を意識することはない
それはRAIIが何かわかっていないから起こる勘違いだね
単にC言語では free() と書けばメモリが解放されるのと同じく、Rustでは何もせずにスコープの末端まで来ればメモリが解放されるだけ
スコープの末端に必ず free() が挿入されるだけなので、これを自動管理と言うならこの世に手動管理は存在しない
そうなると、手動管理が存在しないのに、自動管理という言葉を使う君がおかしなことを言っていることになる
これは矛盾だね
私が言っているのはそれとは違って、ソースコードであらかじめメモリを解放する位置を明示し、また参照・借用や所有権、ライフタイムといったメモリ管理について常にプログラマが制御する必要がある方式のことを「手動管理」と言っている
GCにはこのようなことはなく、メモリは全てランタイムが実行時に管理するため、ソースコード上に解放される位置は書かれていないし、プログラマもメモリ管理を意識することはない
2026/07/07(火) 00:19:27.15ID:73yWDig3
下手糞のMTはATより遅い
2026/07/07(火) 06:05:40.12ID:+R9WRXbp
>>29
それはRAIIの理解不足
RAIIはブロックなどのローカルスコープで宣言したものはそのスコープを抜ける時にも存在していれば自動的にそのリソースが解放される自動管理の仕組み
ただしそこへの参照が残っていれば自動解放されるとダングリンク参照になってしまい危険
Rustはコンパイラが参照連鎖も静的にチェックするため必ずそれを防いでくれるため実用的な自動管理になった
一方でそれらの機構のないGC言語ではローカルスコープを抜けても自動的にそのリソースを解放していいのかわからない
そこへの参照が残っているのか実行前に静的にコンパイル時点で判断できないためだ
だから定期的に参照連鎖を実行時に動的にチェックするガベージコレクション(GC)が必要になる
そして実行時に参照連鎖を追えるようにするためのコストの高いメモリ管理をせざるを得ない
それゆえGC言語は実行が遅くなるだけでなくGC発動まで無駄にメモリを占有してしまう
それはRAIIの理解不足
RAIIはブロックなどのローカルスコープで宣言したものはそのスコープを抜ける時にも存在していれば自動的にそのリソースが解放される自動管理の仕組み
ただしそこへの参照が残っていれば自動解放されるとダングリンク参照になってしまい危険
Rustはコンパイラが参照連鎖も静的にチェックするため必ずそれを防いでくれるため実用的な自動管理になった
一方でそれらの機構のないGC言語ではローカルスコープを抜けても自動的にそのリソースを解放していいのかわからない
そこへの参照が残っているのか実行前に静的にコンパイル時点で判断できないためだ
だから定期的に参照連鎖を実行時に動的にチェックするガベージコレクション(GC)が必要になる
そして実行時に参照連鎖を追えるようにするためのコストの高いメモリ管理をせざるを得ない
それゆえGC言語は実行が遅くなるだけでなくGC発動まで無駄にメモリを占有してしまう
2026/07/09(木) 22:33:58.85ID:t5kHx157
>>31
やっぱり自動管理の意味がわかってないじゃん
コンピュータが最終的な処理をやるから自動だと言ってるなら手動管理なんか存在しないからお前の言ってることはおかしいし、そうじゃないなら自動管理だから自動管理なんだ!って言ってるだけでただ自分の決めつけを押し付けたいだけ
GCがリソースの解放を静的に判断できないという点だけは正しいが、だからランタイムが自動解放するという点を理解してないので後半の説明も片手落ち
やっぱり自動管理の意味がわかってないじゃん
コンピュータが最終的な処理をやるから自動だと言ってるなら手動管理なんか存在しないからお前の言ってることはおかしいし、そうじゃないなら自動管理だから自動管理なんだ!って言ってるだけでただ自分の決めつけを押し付けたいだけ
GCがリソースの解放を静的に判断できないという点だけは正しいが、だからランタイムが自動解放するという点を理解してないので後半の説明も片手落ち
2026/07/09(木) 22:36:23.10ID:t5kHx157
2026/07/09(木) 23:16:50.91ID:nhcPk2TR
>>32
関数やブロックを抜けると自動解放されるRAIIは自動管理そのもの
自動解放タイミングも明瞭かつ直ちに行われて分かりやすく省メモリ
GCも自動解放だがタイミングが不明瞭で遅延が大きく分かりにくくメモリ使用量肥大
関数やブロックを抜けると自動解放されるRAIIは自動管理そのもの
自動解放タイミングも明瞭かつ直ちに行われて分かりやすく省メモリ
GCも自動解放だがタイミングが不明瞭で遅延が大きく分かりにくくメモリ使用量肥大
2026/07/09(木) 23:20:02.33ID:t5kHx157
>>34
それを自動管理と言うなら「free()があれば自動解放されるC言語は自動管理そのもの」ということになる
それを自動管理と言うなら「free()があれば自動解放されるC言語は自動管理そのもの」ということになる
36デフォルトの名無しさん
2026/07/09(木) 23:23:34.90ID:4ETC4bN52026/07/09(木) 23:27:18.09ID:t5kHx157
2026/07/09(木) 23:29:47.99ID:t5kHx157
ついでに言えば、所有権システムもプログラマが自らの意思で矛盾なく設計しなければ成立しない
39デフォルトの名無しさん
2026/07/09(木) 23:30:20.84ID:4ETC4bN5 RAIIはプログラマの意思と関係なく自動的に行われる
スコープを抜ける時にプログラマの意思と関係なく自動的にデストラクタが呼ばれる
スコープを抜ける時にプログラマの意思と関係なく自動的にデストラクタが呼ばれる
2026/07/09(木) 23:35:14.07ID:VR6ODDSK
同じ自動管理でも発動時期が読めないGCより即座に実行されるRAIIが優れているね
41デフォルトの名無しさん
2026/07/09(木) 23:45:45.47ID:xJ9qw/+T 自動管理の言葉の定義で争う無能達
2026/07/09(木) 23:47:09.76ID:t5kHx157
2026/07/09(木) 23:47:46.70ID:t5kHx157
>>41
根本的に理解が足りてないんだろうね
根本的に理解が足りてないんだろうね
2026/07/09(木) 23:49:50.97ID:DugaDw0j
RAIIで自動的にメモリが解放されるRustは両者どちらの定義でも自動管理になるよ
45デフォルトの名無しさん
2026/07/09(木) 23:50:57.48ID:xJ9qw/+T >>43
一番の無能が話しかけないでくれるかな?
一番の無能が話しかけないでくれるかな?
46デフォルトの名無しさん
2026/07/09(木) 23:57:55.81ID:4ETC4bN52026/07/09(木) 23:58:32.98ID:t5kHx157
2026/07/09(木) 23:59:13.02ID:t5kHx157
>>46
RAIIとARCの区別がついていないんじゃないか?
RAIIとARCの区別がついていないんじゃないか?
49デフォルトの名無しさん
2026/07/10(金) 00:01:26.98ID:bAT5n0dl50デフォルトの名無しさん
2026/07/10(金) 00:06:57.93ID:YH4Bmk9y めっちゃ話は単純
RAIIやGCのようにプログラマーの意思と無関係に必ず自動的に実行されると自動管理
free()のようにプログラマの意思で行なうと手動管理
RAIIやGCのようにプログラマーの意思と無関係に必ず自動的に実行されると自動管理
free()のようにプログラマの意思で行なうと手動管理
2026/07/10(金) 00:22:53.35ID:bAT5n0dl
2026/07/10(金) 00:26:51.78ID:Et4y/no6
少なくともRustのRAIIにプログラマーの指定箇所はないね
完全自動になってる
完全自動になってる
2026/07/10(金) 02:27:59.29ID:bAT5n0dl
>>52
RustのRAIIも所有権やライフタイムを明示的に扱わないと機能しないね
RustのRAIIも所有権やライフタイムを明示的に扱わないと機能しないね
2026/07/10(金) 02:39:18.25ID:Dd4gMTqK
>>53
RustでもRAIIはそれらと一切無関係に動作しますよ
RustでもRAIIはそれらと一切無関係に動作しますよ
2026/07/10(金) 03:24:59.62ID:bAT5n0dl
2026/07/10(金) 03:26:07.22ID:bAT5n0dl
やったことないから無関係だと信じてられるんだよw
流石に笑っちまうわww
流石に笑っちまうわww
57デフォルトの名無しさん
2026/07/10(金) 23:45:35.47ID:6bLhCPPM C→C++になってRAIIが導入されて更に手動でunique_ptrを指定すれぱ自動解放できるようになった
ただし参照が残っていればそれは解放後にダングリング参照になってしまう危険なリスクはそのまま
C++→RustになってRAIIにより常に自動解放されるようになった
参照が残らないことも保証されるため安全に自動解放されるようになった
ただし参照が残っていればそれは解放後にダングリング参照になってしまう危険なリスクはそのまま
C++→RustになってRAIIにより常に自動解放されるようになった
参照が残らないことも保証されるため安全に自動解放されるようになった
2026/07/11(土) 03:31:48.38ID:EKW8EhdF
>>57
Rustはあくまでコンパイラがコードに問題がないことを保証することと、RAIIを標準にすることをやっているだけで、メモリの管理は相変わらずプログラマがやらなくてはいけないことに変わりはないので
Rustはあくまでコンパイラがコードに問題がないことを保証することと、RAIIを標準にすることをやっているだけで、メモリの管理は相変わらずプログラマがやらなくてはいけないことに変わりはないので
59デフォルトの名無しさん
2026/07/11(土) 12:09:11.44ID:uV5Zny+82026/07/11(土) 14:20:38.48ID:EKW8EhdF
>>59
話が逸れてる
話が逸れてる
61デフォルトの名無しさん
2026/07/11(土) 21:58:11.86ID:hjNCA0gY RAIIが自動管理は草
RAIIなんかプログラマがシコシコメモリ管理するのを何とかデストラクタ使って頑張ってるだけのこと
RAIIなんかプログラマがシコシコメモリ管理するのを何とかデストラクタ使って頑張ってるだけのこと
2026/07/11(土) 23:05:59.21ID:EKW8EhdF
RAIIを自動管理だと思ってる奴、deferも自動管理だと思ってそう
メモリ管理ちゃんと意識したことないんだろうな
メモリ管理ちゃんと意識したことないんだろうな
63デフォルトの名無しさん
2026/07/12(日) 01:31:32.02ID:SwxS5pWs プログラマーが明示的に指定しなければいけないと手動管理
プログラマが指定する必要がないと自動管理
deferは手動管理
C++のRAIIは手動管理
RustのRAIIは自動管理
プログラマが指定する必要がないと自動管理
deferは手動管理
C++のRAIIは手動管理
RustのRAIIは自動管理
2026/07/12(日) 03:17:05.34ID:MVcsLvMp
2026/07/13(月) 08:53:16.92ID://w25X3S
日常RustメインだがRustは自動解放だから楽勝
管理なんてなくて普通の言語と同じ
関数に引き数として渡すか永続変数に入れておくかの二択しかない
管理なんてなくて普通の言語と同じ
関数に引き数として渡すか永続変数に入れておくかの二択しかない
66デフォルトの名無しさん
2026/07/13(月) 13:29:31.92ID:CAt/1il7 >>65
線形リスト作ってみいや
線形リスト作ってみいや
2026/07/13(月) 14:54:46.91ID:5sH5Cvg8
>>65
ゴミのようなコードが見える見える
ゴミのようなコードが見える見える
2026/07/13(月) 15:19:18.21ID:v1sglfs5
線形リストが使われなくなった理由は他のデータ構造を用いる方が速いとはっきりしたから
辿ること自体が遅いのに加えてメモリキャッシュを活かせないことが敗因
売りポイントの挿入削除もその地点を探すのにO(n)かかって不利でその地点が既知なら他のデータ構造が速い
唯一生き残っている線形リストの使われ方はマルチスレッドにおけるキュー管理で唯一ロックフリーにすることができる
複雑に改良が積み重ねられてきた歴史があるためライブラリの助けを借りるのが良い
というわけで専門家以外が線形リストをプログラミングすることはなくなった
辿ること自体が遅いのに加えてメモリキャッシュを活かせないことが敗因
売りポイントの挿入削除もその地点を探すのにO(n)かかって不利でその地点が既知なら他のデータ構造が速い
唯一生き残っている線形リストの使われ方はマルチスレッドにおけるキュー管理で唯一ロックフリーにすることができる
複雑に改良が積み重ねられてきた歴史があるためライブラリの助けを借りるのが良い
というわけで専門家以外が線形リストをプログラミングすることはなくなった
2026/07/13(月) 16:03:13.43ID:4oZSYmaV
ブロックチェーンという双方向リストで息をふきかえした
線形リストはデータ構造へと昇華したのだ
線形リストはデータ構造へと昇華したのだ
2026/07/13(月) 16:13:31.28ID:k3Rg0Tja
ブロックチェーンで線形リストは使われない
巨大なチェーンを一つずつ辿っていたら遅すぎて実用にならないためハッシュマップが使われている
巨大なチェーンを一つずつ辿っていたら遅すぎて実用にならないためハッシュマップが使われている
2026/07/13(月) 16:55:20.44ID:t84CL3Vg
>>67
それ以外の方法があるなら具体的に述べなさい
それ以外の方法があるなら具体的に述べなさい
2026/07/13(月) 20:16:04.36ID:5sH5Cvg8
2026/07/13(月) 21:36:41.40ID:Ll/Q1aqG
>>72
Rustに詳しくない様だから教えてあげるね
Rustはムーブが基本なのよ
例えばaからbへの代入文 b = a があった時
言語によってはディープコピーするもの
シャローコピーするもの
特に一番浅い参照コピーするもの
それらが状況や型によって変わるもの
など多種多様なのはご存知よね
Rustはそれが基本動作としてムーブになるというだけよ
そして数値などプリミティブな型はコピー属性を持っていてムーブの文脈で代わりにコピーになるのよ
これらの基本動作は自然に行われるから安心してね
Rustに詳しくない様だから教えてあげるね
Rustはムーブが基本なのよ
例えばaからbへの代入文 b = a があった時
言語によってはディープコピーするもの
シャローコピーするもの
特に一番浅い参照コピーするもの
それらが状況や型によって変わるもの
など多種多様なのはご存知よね
Rustはそれが基本動作としてムーブになるというだけよ
そして数値などプリミティブな型はコピー属性を持っていてムーブの文脈で代わりにコピーになるのよ
これらの基本動作は自然に行われるから安心してね
2026/07/13(月) 22:00:52.06ID://w25X3S
>>72
可変参照と不変参照の区別がある言語は増えているけど管理とはなんの話だろう
可変参照と不変参照の区別がある言語は増えているけど管理とはなんの話だろう
2026/07/14(火) 14:17:20.96ID:/b2uC2Vr
2026/07/14(火) 14:17:48.75ID:/b2uC2Vr
2026/07/14(火) 14:46:20.59ID:/b2uC2Vr
2026/07/14(火) 15:41:22.77ID:Mw+1/AR/
79デフォルトの名無しさん
2026/07/14(火) 15:48:21.96ID:00K5fea0 別に当たり前ではないたろ
線型論理は別に唯一の論理ではない
線型論理は別に唯一の論理ではない
レスを投稿する