「6さいからのプログラミング」第6話では、メインメモリを活用してコンピュータに様々な計算をさせる方法を解説します。第5話では関数について解説しましたが、引数の扱い方にはあまり触れませんでした。今回は、引数を読み書きする方法や、もっと幅広くメインメモリを読み書きする方法について解説します。メインメモリ上に値が読み書きできれば様々なことが実現できそうです。メインメモリにはプログラム自身が配置されていたり、他のアプリが使用中の情報も存在しています。このため、何も考えずにメインメモリ上の値を書き換えると問題が起こります(図1-1)。メインメモリの書き換えそこでプログラムからメインメモリ上に値を保存したいときには、自由に書き換えても良い領域を用意して、その領域を使用していきます。通常この「自由に書き換えても良い領域」は、WindowsやAndroidなどのOSが用意してくれますのでそれを使います。この領域には表1-1のような種類があります。関数が呼び出されたときに確保され、関数を抜けるときに解放されます。プログラムが起動したときに確保され、プログラムが終了したときにOSに返される領域です。好きなときに確保し、好きなときに解放できる領域です。これらの領域を用意することを「確保かくほ」といい、不要になったらメインメモリを無駄遣いしないために「解放かいほう」してOSに返します。スタック領域は、最もよく使われる領域で、引数で渡された値はここに配置されます。関数内で一時的にメインメモリを利用したいときにも基本的にこの領域を使います。以前にも説明した通り、スタック領域は「荷物置き場」のようなイメージで、上に値を積んでは上から順に降ろしていく構造になります(図1-2)。静的領域は、プログラムの実行中はずっと同じアドレスに存在し続けている領域です。関数を抜けても解放されたくないような、プログラム全体を通して保持したい値に使います。ヒープ領域は、好きなときに好きなだけ確保できる融通の利く領域です。解放を自分でする必要があり、解放を忘れるとメインメモリにどんどん無駄な領域が溜まる「メモリリーク」という問題が発生します。確保するタイミングでOSがメインメモリから空き領域を探しますので、わずかに時間がかかります。言語によっては確保した領域が不要になると自動的に解放する「ガベージコレクション」という便利な仕組みがあったりします。2変数メインメモリ上の値を読み書きする際にアドレスを直接指定していたのでは解りにくいため、多くの言語では「変数へんすう」というものが使われます。「変数」とは、メインメモリ上に作った箱のようなもので、「名前」と「型」を持っています(図2-1)。変数この例では「n」という名前の、int型の変数を作成しています。変数には値を入れることができ、この例では「5」が入っています。変数とは、メインメモリを安全に使うための仕組みと言えます。05」を書き込むことと同じですが、名前と型を持たせることで、別の型の値が入るのを防いだり、うっかり「A8番地」に書き込んでしまうことも避けられます。