1

私の質問は:変数の名前とデータ自体の両方がスタックに保存されていますか?

変数の名前がスタック内のアドレス メモリ (データ) にどのようにリンクされているか、またそれが何をするのかを知りたいです。

また、変数の型が構成されているバイト数をどのように知り、スタック内のこれらの正確なバイト数をどのように読み取るかを決定しますか?

データの種類に関係なく、スタックに格納されているすべてのデータは同じスペースを占めていますか?

ヒープと同じ質問ですか?

4

1 に答える 1

1

一般に、ほとんどの実際の実装では、次のことが当てはまると思います。

いいえ、名前と実際のデータの両方がスタックに保存されるわけではありません。

コンパイラは変数がスタック上のどこにあるかを追跡し、コンパイラが完了すると、変数へのすべての参照 (つまり、名前) は、スタック ポインターの適切な増加/減少によって置き換えられ、変数が存在するメモリ領域をアドレス指定します。データが保存されます。

いいえ、それらは同じスペースを占めていません。4 バイトの var は 4 バイトを使用します。1000000 バイトの変数は 1000000 バイトを使用します (ただし、通常は推奨されません)。

ヒープは少し異なります...多分このページはあなたの質問にもう少し答えることができます: http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap

于 2012-10-15T10:36:20.607 に答える