動的なメモリ割り当て
メモリ・アプリケーションと解放を達成するには、2つの関数:malloc関数/無料。
malloc関数メモリアプリケーション
する#include <STDLIB.H> int型のmain() { int型 * P =(INT *)はmalloc(100 * 4); // アプリケーション100 * 4バイト のための(INT I = 0 ; I < 100 ; I ++ ){ P [I] = I * I; //は、このメモリ使用 } 戻り 0 ; }
スペースのサイズをバイト単位で適用する、ことを注意、必要なバイト数の合計を計算するための責任を負うアプリケーション自体。例えば、100 INTを格納するために、必要なスペースの大きさは400バイトであるべきで、サイズを指定するために使用されるのmalloc(100 * 4)またはmalloc関数(100 *はsizeof(INT))とすることができます。
アプリケーションメモリの部分を指してmalloc関数の戻り値は、アプリケーションのニーズは、指定されたデータ型にそれを強制します。このメモリアレイと同じの使用の間には本質的な違い。
無料リリースメモリ
書式#include <stdlib.h>に含まれ 、ボイド フリーの(無効 * PTR);
例:シチズンで表現市民は、車と車を表明しました。最初のA車のない市民が、将来に車を持っていることがあります。
する#include <STDLIB.H> する#include < 文字列・H> 構造体の車{ チャーメーカー[ 32 ]; // メーカーINT価格; // 価格 }; 構造体市民{ チャー名[ 32 ]; // 名前のintのdeposite。 // 預金 車 *車; // NULLは何の車を示していないとき }; // オブジェクトの定義:車は開始されませんでした。 Shaofa市民 = { " liyanyan "、100 、NULL}; // その後、彼は車を買うことができました。 空を購入(シチズン* 所有者){ // オブジェクトの作成 の車を * CAR =(カー*)はmalloc(はsizeof (車)); strcpyの(CAR - >メーカー、" BMW " ); CAR。 - >価格= 10 ; // このオブジェクト(または、むしろポインタを覚えて)保存 所有者 - > =の車の車; // が付いている車 の所有者。 - >のdeposite -車の- =>価格; // お金が消えていた } // ある日、この車それは廃棄されます。 ボイド廃棄(市民*所有者、市民* OTHER){ 車 * =所有者- CAR> CAR。 CAR - >価格* =。0.5 ; // 半額セール 他 - > = CARのCAR; // 他の人が車の持っている 所有者を - > CAR- + =>ののdeposite 価格; // 無料ではない(CAR); // 解放できませんこの車は他人の手の中にある 所有者 - >車= NULL; // カーフリーの状態に戻っ }