C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++でのグローバルメモリ管理:スタックまたはヒープ?


スタックとヒープは、プログラムの実行中に変数を格納するために使用され、変数も破棄されます。

グローバルデータ構造またはグローバル変数は、スタックまたはヒープによって消費されません。それらは基本的に固定メモリブロックに割り当てられ、変更されません。

int a[10]; // located in a fixed memory block
int main() {
   int main() {
      float *ptr = (int *)malloc(sizeof(float)10.0)); //use heap.
   }
}

  1. C ++ STL(3.5)でスタック

    C ++ STLでは、スタックはLIFO構造として実装されるコンテナーとして使用されます。 LIFOは後入れ先出しを意味します。 Stackは、本が上下に並べられた本の山と見なすことができ、最後に挿入された本が最初に削除されるため、LIFO構造と呼ばれます。 スタックに関連付けられている操作は- Top() -この関数は、スタックの最上位要素への参照を返します。 構文 --name_of_stack.top() パラメータ -パラメータなし 戻り値 -スタックコンテナの最上位要素への参照 Push() -この関数は、要素をスタックコンテナに挿入するために使用されま

  2. C ++の二項ヒープ?

    二項ヒープは、二分ヒープの拡張として定義され、二分ヒープによって提供される他の操作と一緒に、より高速なマージまたは結合操作を提供します。 二項ヒープは、二項ツリーのコレクションとして扱われます。 二項ツリーとは何ですか? 次数kの二項ツリーは、次数k-1の2つの二項ツリーを取得し、一方を左端の子またはその他として扱うことで構築できます。 次数kの二項ツリーには以下のプロパティがあります。 BinomialTreeのノード数は正確に2kです。 。 BinomialTreeの深さはkです。 深さiには正確にkCiノードがあります。ここでi=0、1 、。 。 。 、k。