この記事は、董澤潤氏が執筆したWeChat公開アカウント「董澤潤の技術ノート」から転載したものです。この記事を転載する場合は、Dong Zerun の Technical Notes 公開アカウントにご連絡ください。 C++に精通している人はshared_ptr、unique_ptrを知っているはずです。また、RustにはスマートポインタBox、Rc、Arc、RefCellなどがあります。この記事では、Boxの基礎となる実装を紹介します。 箱 入門例この例は Rust の本から引用したものです。デモンストレーションの目的で、print ステートメントは削除されています。
変数 0x11223344 をヒープ上に割り当てる、いわゆるボクシングですが、Java の学習者ならよく知っているはずです。 dockerをマウントし、rust-gdbを使用してアセンブリ実装を表示してみましょう。
重要なポイントは 2 つあります。alloc::alloc::exchange_malloc はヒープ上にメモリ領域を割り当て、この malloc のアドレスに 0x11223344 を格納します。 関数の最後では、コンパイラは型が alloc::boxed::Box であることを認識しているため、アドレスは core::ptr::drop_in_place に渡されて解放されます。 この例だけを見ると、Box は不思議ではありません。対応するアセンブリ実装は、通常のポインタと何ら変わりありません。すべての制約はコンパイル時の動作です。 所有
この例では、文字列はボックス化されていますが、String は広い意味でスマート ポインターであるため、ボックス化する必要はありません。この例ではエラーが報告されます
*xはStringに逆参照され、yに割り当てられると移動セマンティクスが実行され、所有権がなくなるため、後続のprintlnはxを印刷できません。
これを修正するには、文字列への不変の参照を取得します。 低レベルの実装
上記は Box の定義です。これは 2 つのジェネリック パラメータを持つタプル構造であることがわかります。T は任意の型を表し、A はメモリ アロケータを表します。 A は標準ライブラリの Gloal のデフォルト値です。 T にはジェネリック制約 ?Sized があり、これは型のサイズがコンパイル時にわかる場合とわからない場合があることを意味します。もちろん、これは通常、サイズが不明なシナリオで使用され、上記のように int を格納することはほとんどありません。
これはDrop実装であり、ソースコードにも記載されており、コンパイラによって実装されています。
逆参照動作を定義するために Deref を実装し、可変逆参照のために DerefMut を実装しました。したがって、*xは*(x.deref())という演算に対応する。 適用可能なシナリオ 公式サイトでは以下の3つのシナリオが挙げられています。本質的にはBoxは通常のポインタとあまり変わらないので、Rc、Arc、RefCellほど便利ではありません。
公式サイトにはリンクリストの実装がある
上記のコードは実行できませんが、その理由は非常に単純です。これは再帰的な定義です。対応する C コードも受け入れられません。通常、次の型をポインターとして定義する必要があります。
公式サイトで提示されている解決策は、次をポインターボックスに変えることです |
<<: 米国の刑務所、受刑者の通話を分析するために人工知能を導入する計画
>>: 日本メディア:中国は人工知能の分野で米国を追い越している
ビジョントランスフォーマーや LLM などのディープラーニングモデルをトレーニングする場合、ピーク時...
自動運転は現在社会的なホットな話題となっており、人工知能と自動化技術の革新的な開発にとって重要な方向...
AI 音声翻訳の分野では、ノイズは対処しなければならない主要な課題の 1 つです。この装置は研究室や...
こんにちは、ルガです。今日は、人工知能エコシステムの中核技術である「生成型人工知能」を意味する GA...
機械学習の実装は、AI を活用した製品やサービスの成功にとって重要なステップです。 MLOps が企...
[[324403]]図1:2010年に重度の脊髄損傷を負った後、バークハートは運動皮質にマイクロチッ...
この記事では、主にニューラル ネットワークの普遍近似理論を紹介し、PyTorch を使用して 2 つ...
近年、3D コンピューター ビジョンと人工知能はともに急速に進歩していますが、両者の効果的な組み合わ...
[[403918]]近年、経済の継続的な発展に伴い、わが国では中間所得層の総数が増加しています。現在...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
3月19日、杭州でCSHIA 2019スマートホーム業界開幕式が開催されました。ブランドメーカー、イ...
エンタープライズ チャットボットは脳死状態です。彼らには認知力も深みもなく、リアルタイムの概念や状況...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...