近い将来、我々はC.にダイナミックでメモリを解放し学習を開始したいです それらを学習する前に、我々は最初のダイナミクスアプリケーションを把握し、理解するためのプログラムのメモリパーティションを学び、メモリの解放は、基本的な土台を行います。
なぜプログラムのメモリパーティションを持っています
一般的には、私たちの家が複数のゾーン(ベッドルーム、キッチン、バルコニー、バスルーム、など)に分割されます、異なる領域が異なる機能を持っています。
実行すると、プログラムのパーティションが同じ理由で、システム管理手順、メモリの異なる領域、異なる機能を操作することは容易です。
実行時メモリパーティションプログラム
初心者として、私たちは単に知っている、プログラムがあり、全体の面積、スタック領域とヒープ領域ことができます。
- グローバルエリア:主な機能はよく実行するために割り当てられている前に、プログラムのコード(マシンコード)、グローバル変数は、グローバル領域です
- スタック領域:関数コールとリターンを使用すると、自動的に割り当てられ、リサイクルされます。比較的限られたスタック領域(Mグレード)。
次のコードは、スタックスペースが限られていることを示すことができます。
#include <stdio.h>
int main(int argc, char* argv[])
{
char szBuff[10000000];
return 0;
}
ヒープ
かかわらず、グローバルメモリ領域やスタック領域、彼らは通常、唯一のオペレーティングシステムによって制御される大量のメモリを使用することができ、メモリの小さな部分の、要求に応じて動的に割り当てられます。
このとき、オペレーティングシステムは、ホテルの役割に似ており、メモリが部屋です。
私たちは、事前に割り当てられたホテルの予約に似た動的なメモリ操作を、適用されます。
我々は、チェックアウトに似たダイナミックなアクションのメモリを解放します。
客室はホテルが私たち(私たちにリース)にライセンスかどうかに応じて、我々が使用できることがありました。
メモリが似ている、メモリは常に存在してきたが、我々は、オペレーティング・システムは、私たちに割り当てられた方法に応じて、メモリアドレスの一部を使用して、プログラムを使用できるかどうか。
上述した、オペレーティング・システムが動的に割り当て管理、メモリ回収領域を制御し、呼ばれるヒープ。
我々は、C標準ライブラリ関数のmallocとfree、動的なアプリケーションを使用してヒープメモリを解放する方法を学びます後。