C言語って…at GAMEDEVC言語って… - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト250:たける 15/02/03 16:26:24.96 vhteoDYM.net くわしく 251:名前は開発中のものです。 15/02/06 12:13:45.69 Dq4nT0Xs.net >>242 C言語学び始めの俺には非常にわかりやすいレスだ コピペして自分のメモ帳に残しておくわ 252:名前は開発中のものです。 15/02/10 18:37:41.43 avKQ6s0l.net >>242 そのint aがレジスタに割り当てられたとき、&aはどこのアドレスを指すの? 253:名前は開発中のものです。 15/02/13 16:10:49.40 fRUihGLp.net >>242って4年前のレスだぞ…。 一応答えておくと、メモリ上の変数をそのつどレジスタにコピーしてから演算するわけで、 殆どの場合、変数にはメモリが割り当てられている。その辺りの動作は基本的に コンパイラがうまくやってくれているので知ってさえいればいい。 (あらかじめ作成した)静的変数や(newで作成した)ヒープ上の変数は 必ずメモリ上の実体があるから&aは必ずそこを指す。 一方、(関数内などローカルスコープで一時確保した)動的変数は、コンパイラの最適化によっては 例外的にメモリ上の実体を持たず、レジスタだけということもあるはず。 だけどその関数内で&aという表記が用いられたら、コンパイラは最適化を見送って きちんとスタック上にメモリを割り当てることになる。スコープから出るまでは&aはそこを指す。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch