8
変数はプログラムスタックにどのように格納され、そこから取得されますか?
この質問の素朴さに謝罪します。私は50歳のアーティストで、初めてコンピューターを正しく理解しようとしています。だからここに行きます。 私は、データ型と変数がコンパイラによってどのように処理されるかを理解しようとしています(非常に一般的な意味で、私はそれがたくさんあることを知っています)。「スタック」のストレージと値型、および「ヒープ」のストレージと参照型の関係についての理解が不足しています(引用符は、これらの用語が抽象化であって、私がこの質問を組み立てているように、そのような単純化されたコンテキストで文字通りに取られすぎます)。とにかく、私の単純なアイデアは、ブールや整数のような型は「スタック」に行くということです。なぜなら、それらはストレージスペースの観点から既知のエンティティであり、スコープはそれに応じて簡単に制御できるからです。 しかし、スタック上の変数がアプリケーションによって読み取られる方法はわかりませんx-たとえばx = 3、宣言して整数として割り当て、ストレージがスタック上に予約され、その値が3そこに格納され、次に同じ機能Iを宣言し、アサインy言う、など4そして、私はその後、使用することを、次のx別の表現では、(と言うz = 5 + xプログラムを読むことができるか)xを評価するためにz、それは以下であるときyスタックに?私は明らかに何かが欠けています。スタック上の場所は変数の有効期間/スコープにすぎず、スタック全体が常にプログラムから実際にアクセス可能であるということですか?もしそうなら、値を取得できるようにスタック上の変数のアドレスのみを保持する他のインデックスがあることを意味しますか?しかし、その後、スタックのポイントは、値が変数アドレスと同じ場所に格納されていることだと思いましたか?私のちっぽけな心では、この他のインデックスがある場合、私たちはよりヒープのようなものについて話しているようです?私は明らかに非常に混乱しており、単純な質問に対する簡単な答えがあることを望んでいます。 ここまで読んでくれてありがとう。