【初心者歓迎】C/C++室 Ver.64【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.64【環境依存OK】 - 暇つぶし2ch298:デフォルトの名無しさん
09/03/08 01:38:45
>>297
私の知識不足で非初期化データ領域や物理メモリと言われても、ぱっと理解できなかったのですが
以下のような考えでよいのでしょうか?

私の使っているOS(WinsowsXP)の場合
・関数内で宣言するローカル変数の場合
void main(){
  int a;        //この時点で非初期化データ領域に変数aの存在が知らされる。
  printf("%d\n", a);  //この時点では値を代入したわけではないので何が表示されるか分からない(物理メモリにはaが存在しないのでメモリの使用量は増えない)
  a = 0;        //値が代入された(これによりaには0という値が存在するということになり物理メモリに割り当てられメモリの使用量が増える)
  printf("%d\n", a);  //0が表示される(物理メモリにはaが存在する)
}

・関数外で宣言するグローバル変数の場合
int b;          //この時点で非初期化データ領域に変数bの存在が知らされる。
void main(){
  printf("%d\n", b);  //0が表示される(物理メモリに割り当てられているわけではないがグローバル変数なので特別にbは0として扱える)
  b = 0;        //値が代入された(これによりbには0の値が存在するということになり物理メモリに割り当てられメモリの使用量が増える)
  printf("%d\n", b);  //0が表示される(物理メモリにはbが存在する)
}


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch