第３３回 メモリ２
今回も、Ｃ言語で使うメモリについて説明していきます。
では、ソースコードを見てください。
＜ソースコード＞
int i;
char a[8];
for ( i=7; i>=0; i-- )
a[i] = i;
/* 関数の値を表示します */
for ( i=0; i<8; i++ )
printf( "変数 a[%d]は %c で、アドレスは %c です\n",
早速、コンパイルして実行してみましょう。
結果は、
変数 a[0]は 0 で、アドレスは 6553076 です
変数 a[1]は 1 で、アドレスは 6553077 です
変数 a[2]は 2 で、アドレスは 6553078 です
変数 a[3]は 3 で、アドレスは 6553079 です
変数 a[4]は 4 で、アドレスは 6553080 です
変数 a[5]は 5 で、アドレスは 6553081 です
変数 a[6]は 6 で、アドレスは 6553082 です
変数 a[7]は 7 で、アドレスは 6553083 です
が表示されたはずです。
アドレスは、コンピュータの環境などによって異なります。
さて、結果をみて特にアドレス番号が１ずつずれていることがわかれば、
当然の結果ですが、１ずつということは１バイトずつということです。
char変数は定義すると、１バイトメモリを確保します。
プログラムの６行目で前回はint型でしたが、今回はchar変数を定義していますね。
i に関しては４バイト、a[8]に関しては８バイトのメモリを確保しています。
結果を見てください。アドレスの6553076から6553083の間は８ですね。
表示している結果のアドレスはその変数の先頭アドレスです。
これで型によるメモリの確保とその使い方が少し解かったはずです。
では、アドレスについて考えてみましょうか？
みなさんのコンピュータは、メモリがついていてその中にＯＳ、様々なアプリ
ケーションが、起動しています。時計をみると既に動いているアプリケーショ
ンがあるので常時動いているアプリケーションの存在もわかりますね。
つまり、常時アプリケーションが動いているものが多いほど、コンピュータの
メモリは既にそのアプリケーションに必要なだけ確保されているということで
す。本体メモリが２ＧＢだと、かなりのアプリケーションが動くとは思い
ますが、２ＧＢを超えるアプリケーションは動かないのか？
と思われた方もいるかもしれません。
いずれやりますが、それは、後で説明しましょう。
気になる方はスワップファイルなどについて調べてみるといいでしょう。
それでは、次回をお楽しみに。