スタックとヒープの違い
コンピュータの分野では、無視することはできませんスタックを使用する必要があり、我々は基本的にC言語プログラムで記述された概念です。しかし、初心者の多くは、スタックが非常に漠然とした概念です。スタック:
- データ構造。
- 店舗への場所のためのプログラムが実行されています。
スタックとヒープのデータ構造
- 第一の記憶後に採取した第一の記憶後に採取された形リニアLIFO特性を有するスタックデータ構造は、です。これは、我々は(比較的早いオブジェクトへの)内側のボックスの下に出て欲しいもの、それは(比較的遅くにオブジェクト)をオブジェクトの上に、我々は最初の圧力を削除する必要がありますようなものです。
- スタックは、バイナリツリーの配列を使用して実装され、親はその子ポインタやポインタのすべてを使用していません。「ヒーププロパティ」でソートされるようヒープ「ヒーププロパティが」ツリー内のノードの位置を決定します。
参考ヒープ構造:https://www.jianshu.com/p/6b526aa481b1
メモリスタック
- アドレスの比較的高い成長方向に対処するために、ローカル変数、一時的なメモリ空間変数、メモリのスタック領域のスタック割り当てはそう(スタックオーバーフローを引き起こす可能性がありすぎ開き、メモリの比較的小さなスタックにあります再帰を使用する場合、例えば、再帰層深すぎるか再帰終了条件)は、スタックオーバーフローをもたらすことができます。
- ヒープがあり、このような新しいスペースのmallocとアウトなどのアプリケーションプログラマ、に割り当てられたメモリ空間は、ヒープ上で、これらの変数の特性は、ヒープを手動で開け、手動れる育っリリース、タイムリーなリリースに失敗しましたメモリリークが発生します。
より速くアクセスするどのヒープとスタック?
いくつかを取る割り当てと解放の割り当てと解放したときに、ヒープが(MALLOC、FREE)関数を呼び出す必要があります(いくつかリリース配信後のボイドを引き起こす可能性があるので)、例えば、割り当てのヒープサイズに十分なスペースを見つけることになり、時間、あなたは特定のmallocとfreeソースコードを見ることができ、彼らは余分な作業の多くを行うが、スタックは、これらを必要としません。要約すると、ヒープより効率的なスタック