C++ コンパイラは、関数で初期化された変数をどのように整理して格納し、コンピューターがそれらを最速の方法で見つけられるようにしますか?
コンパイラがそれらをスタックに次々と配置することは理解していますが、その背後にはいくつかのロジックが必要です.Googleを何時間も検索していましたが、何も見つかりませんでした.
例えば:
int main()
{
float a;
int b;
char c;
double d;
}
これは、C++ コンパイラがメモリに格納する方法のため、以下のものよりも多くのメモリを占有するはずです。
もちろん、使用される正確なビットは同じですが、以下の例ではより効率的な順序で格納する必要があります。次の例では、これらの変数はコンパイラによってメモリ内のどこに格納されるでしょうか? 私が理解している限り、変数は常に次のようなブロックに格納されます(logical number) % (number of bytes the datatype) = 0
int main()
{
char c;
int b;
float a;
double d;
}