ストレージバインディングに基づくバインディングプロセスと変数の分類について研究しています。そのため、次の 4 種類の変数に直面しました。
- 静的変数: これらは実行前 (つまり、コンパイル中) にメモリにバインドされ、実行中ずっとバインドされたままです。
- スタック動的変数: これらの変数は、コンパイル時に型に静的にバインドされますが、コードの実行が宣言に到達するまでメモリ位置にバインドされません。
- 明示的なヒープ動的変数: これらの変数は、明示的な実行時のプログラマ指定の命令によって割り当ておよび割り当て解除されます。必要なメモリ セルを提供するために、スタックではなくヒープが使用されます。
- 暗黙的なヒープ動的変数: メモリ セルを含むこれらの変数のすべての属性は、値が割り当てられるときにバインドされます。
私の質問は、タイプ 2 と 4 に関するものです。タイプ ビディングが動的なプログラミング言語 (Php、Ruby、Python など) では、すべての変数がタイプ 4 のように見えます。
本当ですか?ローカル変数を含むすべての変数がヒープに置かれますか? これは実装の問題ですか、それともローカル変数がスタックに置かれ、他の変数がヒープに置かれる動的型バインディングを持つ言語を実装する可能性はありませんか?