私はC言語を学んでおり、いくつか質問があります。 int i = 0
のような変数を宣言するとき。 私はにスタックのアドレスを持っていますよね?Cのスタック上のデータの編成?
私は関数がメモリ内でどのように構成されているのだろうかと思います。たとえば、私は次のような関数を持っています:
int myF() {
int x = 2, y = 3;
int z = x + y;
return x;
}
このメソッドはどのようにスタック化されていますか?私は "myF"という名前は他のvarialbesと同じようにメモリアドレスを持っていますか? "myF"には、機能の終了位置を示す終了アドレスのようなものが必要ですか?
私は間違っていますか?
ありがとうございます。
コンパイラによっては、Cコードのアセンブリリストを作成すると役立ちます。そうすれば、指示が表示され、どのように動作するかがわかります。 –
Cはスタックを指定していないので、自動変数の配置方法や、特定の実装に依存します。 – user611775
変数はスタック内で終わるのが普通ですが、それらは完全に最適化されたり、レジスタ内にのみ存在したりすることができます。コンパイラがコードをどのように翻訳したかについては何も想定しないでください。 – pmg