ホームページ >バックエンド開発 >Golang >Go 言語の観点から見たメモリ割り当てに関する簡単な説明

Go 言語の観点から見たメモリ割り当てに関する簡単な説明

Go语言进阶学习
Go语言进阶学习転載
2023-07-24 15:45:17523ブラウズ

#C 言語を学ぶべき理由

さて、、、今年は2023年ですが、現在のさまざまな開発プロジェクトを見てみると確かにC言語はほとんど使われていません、組み込みなど一部の分野を除けばほとんど見かけません、C言語の痕跡はありません、しかし、なぜ私はまだ xx が C 言語をよく学ぶ必要があると言っているのを聞いているのですか?

私の理解によれば、実際には、C 言語を学ぶとき、あなたはこの言語を学んでいるのではありません。しかし、それはこの言語の背後にあるもの、それが表すデザイン、そしてそれが表す本質です。


#C 言語をよく学ぶとどのようなメリットがありますか?

多くの新参者は、グループ内で特定の上司が「私は1週間でxx言語を学び終えて、その後直接仕事を始めました。その後、あなたは無言で言いました。13歳のふりをしてください。それともあなたはグループの中にいますか?」直接対決だった。

では、本当に 1 週​​間や 2 週間で言語を習得できると言えるのでしょうか?

私は責任を持って、まったく問題ないとお伝えできますが、それは強固な基盤の上に築く必要があります。

ポインタは特に重要な基盤であり、現在どの言語が使用されているかに関係なく、本質はポインタの適用ですが、カプセル化は単純です。

しかし、これが何を引き起こすかというと、基盤が不安定な場合、特に初心者にとっては説明のつかない、理解できない問題が発生する可能性があります。

したがって、今どの段階であっても、C 言語を学習していない人は C を学習し、置き去りにされている重要な基礎を習得する必要があります。

それでは、まず簡単に紹介させていただきます。


必要な技術スタック

今回使用する技術スタック Goです理論上はC言語を使用しますが、ポインタを始める場合にはGoとCの本質は基本的に同じなので、より使いやすいGo言語を使用します。

後で Python を追加し、Go と比較して違いを確認し、一般的な Python がどのようにメモリを割り当てるかを確認します。

現時点でも、この記事を読んでいる友人には、ある程度の基礎を身につけ、少なくとも変数の定義方法などを理解しておくことをお勧めします。


##オペレーティング システムとハードウェアの関係

まず、理解する必要があります。コンピューターの主なコンポーネントを見てみましょう。

まず、簡単に言うと、少なくとも CPU メモリースティック##ハードディスク# ### ######## ###############グラフィックスカード############### ####### ##モニター##オペレーティング システム (Linux、Windows)# #### #######待って。 では、これらのハードウェアはどのように連携するのでしょうか? まあ...おそらくそれは、少し醜いように見えるかもしれません。 ###########################要するに:################# ### #コンピューターに音楽を再生させたり、モニターに何かを表示させたり、ハードディスクにファイルを書き込ませたりするシステム上のすべてのアプリケーション (qq、WeChat など) は、すべてオペレーティング システムの同意を必要とします。



オペレーティング システムは CPU を呼び出して命令の実行を完了し、CPU は開いているアプリケーションをメモリ スティックに読み取ります。ディスクが詰まっていますか? マシンが遅すぎるため、ソリッド ステートがハードディスク データからメモリー スティック データへの転送を瞬時に完了できるようになりました。

メモリースティックに読み込まれたアプリケーションデータをCPUが解析し、CPUが処理したデータであればそれを取り出して自分で計算します。グラフィックス カードによって処理される場合は、グラフィックス カード用に計算を呼び出します。サウンド データの場合は、サウンド カード用に計算するなどです。
  1. 上記の調整により、アプリケーション全体は基本的に実行できますが、データをハードディスクに書き込む必要がある場合、CPU はデータをハードディスクに書き込むだけで済みます。メモリースティックをハードディスクに貼り付けます。
  2. さて、以上でオペレーティングシステムと各ハードウェアの連携関係を基本的に理解することができました。
  3. 内緒ですが、私たちが書いたコードは基本的にメモリースティック内で動作しており、同様に上記のアプリケーションも基本的に適用されるコードとなります。メモリースティック内で実行中。

  4. メモリースティック

    はい、それがメモリースティックです。

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明

    #同様に、メモリースティックの内部構造もこのようにして理解できます。

    #このように、メモリースティックを家として理解することができます。

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明#まだ醜いです...


    しかし、メモリスティックには ## が付いています。

    # 座標は address とも呼ばれ、それぞれの値を持つ小さなグリッドに配置されます。

    #しかし、通常、私たちはこのようにフラットに理解します。

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明

    #アドレス(座標)は一般的に16進数で表現されており、値が何であってもおかしくありません。

    コード概要

    非常に短い Go コードを見てみましょう。

    年齢変数を宣言し、値 18 を割り当てて出力します。

    package main
    
    
    import "fmt"
    
    
    func main() {
        var age int = 18
        fmt.Println("我今年:",age,"岁")
    }

    がメモリ内でどのように表現されるか。

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明

    #変数名 age は、0x1001 アドレスを指します。となり、0x0001に格納されている値が出力されます。 ###############このような。

    注:

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明

    この文を必ず理解してください。変数名はメモリ モジュールを指しています。の住所。

    上記の年齢は、アドレス 0x1001 を指します。

    しかし、現時点で印刷している です。アドレス 同様に、値を代入して変数を交換する場合、# はアドレス

    # の # のままです。 ## #####価値#########。 ###############例えば:################################ ##上記のコードのメモリ割り当て図。

    age2 は、18 歳の値を保存するアドレスを再申請します。

    土曜日に、誰かがそのような状況はあるかと尋ねることがあるかもしれません。両方とも同時に同じメモリを指しています。これにより、より多くのメモリを節約できるのではありませんか?

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明

    結果: もちろん、この状況については後で説明します。今は段階的に理解してください。


    #結論

    変数名のポイントto はメモリアドレス です。

    値を割り当てるとき、または印刷などの変数を操作するときは、アドレス より上の値を操作します。


    終了

    上記はすでに非常に長いので、あなたはそうかもしれません少しめまいがします。この記事はここで終わります。

    操作中にタスクの問題が発生した場合は、以下にメッセージを忘れずに残してください。できるだけ早く問題を解決します。

    私は Zhouba のプログラマーです。良いと思ったら、忘れずに「いいね」をしてください。 ############ご清覧ありがとうございました。

    操作中に問題が発生した場合は、以下にメッセージを残してください。できるだけ早く問題を解決します。

    笑顔を使って、昨日よりも今日の方が良くなった、そして将来も同じだということを他の人に伝えましょう。

    この記事が良いと思われる場合は、ぜひ「いいね!」をしてください

    サポートするメッセージを残してください

    。お読みいただきありがとうございます。ご質問がございましたら、以下にメッセージを残してください~ Python についてさらに詳しく知りたい場合は、学習 Web サイトを参照してください: http:// pdcfighting.com/ で、「元のテキストを読む」をクリックすると、直接 ~

    に移動できます。 #

    -------- -------- ---# # ###### 終わり ############## - -### - ##################- - ------------# 過去号のおすすめ記事: この記事では、 Go におけるネットワーク プログラミングの基礎

    Go 言語の基本構造 (冬)

    Go 言語の観点から見たメモリ割り当てに関する簡単な説明

  5. Go 言語の同時実行性 (チャネル) の基本を理解するための記事

  6. Go 言語の観点から見たメモリ割り当てに関する簡単な説明

    皆さん、ようこそ いいね、 メッセージを残す、 転送、 転載、お付き合いとサポートに感謝します

    Go 学習グループに参加したい場合は、バックグラウンドで返信してください [ グループに参加してください]

    何千もの川や山はいつも愛です。[Looking] をクリックしてください。よろしいですか?

    ##

以上がGo 言語の観点から見たメモリ割り当てに関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はGo语言进阶学习で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。