K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>はじめまして。 > >>変数hogeのアドレス(&hoge)は"0xbfbfd9e4"。 >>そこに数値5をint型で配置する。 >>これは分かるのですが、変数hoge自体は、誰がどこで管理しているのでしょうか。 >> >>図表では、0xbfbfd9e4アドレスからの始まりに5が格納されており、これは分かります。 >>しかし、同時に、"hoge"もあります。この辺りで混乱しております。 > >誤解を招いたなら申し訳ないですが、p.034のFig.1-1において、 >図の中に「hoge」が書いてあるのは、読者にとってわかりやすくするためで、 >プログラムの実行時に「hoge」という名前がどこかに保持されているわけではありません。 >Cの場合、コンパイル時にデバッグオプションを付けたりしない限り、 >たいていは、ローカル変数の変数名(この場合hoge)は、コンパイル後の >オブジェクトファイルに残ってすらいません。 > >ではどのように変数hogeを参照しているのかといえば、素朴な実装では、スタック内の、 >現在実行中の関数の使用領域(p.095のFig.2-5において、「func()から見える領域」と >書いてある範囲。スタックフレームと言います)内の位置が、コンパイル後の >機械語コードに埋め込まれていて、それを使用して参照します。 >こちらの図↓で言えば、BPからの相対位置でアクセスします。 > >http://www.c-tipsref.com/words/stackframe.html > >グローバル変数やstatic変数は、リンクの時点でアドレスが決まります。 >「2-4-2 分割コンパイルとリンク」を参照してください。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!