C++メモリパーティション——ヒープスペース


C++プログラムの内部純構造は通常4つの領域に分けられる.
     1.データ領域(Data Area)
     2.コード領域(Code Area)
     3.スタック領域(Stack Area)
     4.ヒープ領域(すなわち自由記憶領域)(Heap Area)
グローバル変数、静的変数、定数はデータ領域に格納され、すべてのクラスメンバー関数と非メンバー関数コードはコード領域に格納され、関数を実行するために割り当てられた局所変数、関数パラメータ、戻りデータ、戻りアドレスなどはスタック領域に格納され、残りの空間はスタック領域である.
スタックは限られているため、混雑する可能性があります.メモリの必要性を満たすのに十分な自由空間がない場合、この必要性は失敗し、空のポインタを返します.そのため、NEWで生成されたポインタを使用する前に、次のようにチェックする必要があります.

HeapClass *pa1 , *pa2;
pa1 = new HeapClass(4);        //     
pa2 = new HeapClass ();        //     
if(!pa1 || !pa2){              //     
  cout<<"out of Memory"<<endl;
  return;
}

一般的に、スタックスペースは他のメモリスペースに比べて比較的空いており、必要に応じてプログラムの実行に大きな自由度をもたらしているが、スタック領域の管理は非常に複雑な作業であり、頻繁に(NEW)を割り当てたり(DELETE)を解放したり(DELETE)したりする異なるサイズのスタックスペースはスタック内の断片化を生じる.スタックスペースを使用するのは、
   .実行時までにどれだけのオブジェクトスペースが必要かを知ることができます.
   .対象の生存期間がどれくらいあるか分からない.
   .実行時になって、オブジェクトにどれだけのメモリ領域が必要かがわかります.