06.スタック領域とヒープ領域

Thanks for your watching! This site summarizes the basic information about C #

06.スタック領域とヒープ領域

2019年5月31日 C# プログラミング メモリ 学習 0

現在の学習ステップはここです。

学習の進捗状況
画像:学習の進捗

今回は、型と変数を宣言した際、メモリのどこに格納されるかを学習します。

♦メモリ領域

プログラミングをする上で、メモリは常に意識しなくてはいけません。

メモリには当然、容量があり、やみくもに使いすぎるとプログラムが強制終了してしまいます。

メモリ領域には、データ領域内の「スタック領域」と「ヒープ領域」があります。

スタック領域には、値型のデータと参照型のデータのアドレス値が格納されます。

ヒープ領域には、一部の参照型のデータが格納されます。

メモリを簡単に図式化すると、次のようになります。

スタック領域とヒープ領域についての画像
画像:スタック領域とヒープ領域

なお、値型には「int」型や、「double」型など(参考:型と変数)が含まれます。

参照型は、「string」型や、配列(int[ ] , double[ ])などが含まれます。

ちなみに、クラス(インスタンスではない)はコード領域に存在します。

スタック領域は、データの読み書きが早く、「後入れ先出し」が原則です。

一方、ヒープ領域はデータの読み書きには少し時間を要します。「先入れ先出し」が原則です。

ここでは、スタック領域とヒープ領域に関する概念を取り上げましたが、今後プログラミングの学習を進めるうえで、どの式がどの領域に入るかを随時説明します。

本来であれば、「先入れ」とか「先出し」についても解説し、メモリ領域の確保から解放までを説明すべきですが、C#には「ガベージコレクション」という機能があります。

♦ガベージコレクション

ガベージコレクションは、使われなくなったメモリ内の領域を自動で開放する機能です。

この機能により、C#ではメモリ領域の解放をあまり意識せずにプログラミングすることができます。

これは.NET環境ならではの機能で、プログラマがアプリケーションに関係のない部分に気を遣わずに済む素晴らしい仕組みなのです。

スタック領域とヒープ領域に関しては以上です。

ご不明な点がございましたらコメントを頂けますと幸いです。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です