インタビューの質問 - スタックとヒープの違い

スタックとヒープの違い

コンピュータの分野では、無視することはできませんスタックを使用する必要があり、我々は基本的にC言語プログラムで記述された概念です。しかし、初心者の多くは、スタックが非常に漠然とした概念です。スタック:

  • データ構造。
  • 店舗への場所のためのプログラムが実行されています。

スタックとヒープのデータ構造

  • 第一の記憶後に採取した第一の記憶後に採取された形リニアLIFO特性を有するスタックデータ構造は、です。これは、我々は(比較的早いオブジェクトへの)内側のボックスの下に出て欲しいもの、それは(比較的遅くにオブジェクト)をオブジェクトの上に、我々は最初の圧力を削除する必要がありますようなものです。
  • スタックは、バイナリツリーの配列を使用して実装され、親はその子ポインタやポインタのすべてを使用していません。「ヒーププロパティ」でソートされるようヒープ「ヒーププロパティが」ツリー内のノードの位置を決定します。
    参考ヒープ構造:https://www.jianshu.com/p/6b526aa481b1

メモリスタック

  • アドレスの比較的高い成長方向に対処するために、ローカル変数、一時的なメモリ空間変数、メモリのスタック領域のスタック割り当てはそう(スタックオーバーフローを引き起こす可能性がありすぎ開き、メモリの比較的小さなスタックにあります再帰を使用する場合、例えば、再帰層深すぎるか再帰終了条件)は、スタックオーバーフローをもたらすことができます。
  • ヒープがあり、このような新しいスペースのmallocとアウトなどのアプリケーションプログラマ、に割り当てられたメモリ空間は、ヒープ上で、これらの変数の特性は、ヒープを手動で開け、手動れる育っリリース、タイムリーなリリースに失敗しましたメモリリークが発生します。

より速くアクセスするどのヒープとスタック?
いくつかを取る割り当てと解放の割り当てと解放したときに、ヒープが(MALLOC、FREE)関数を呼び出す必要があります(いくつかリリース配信後のボイドを引き起こす可能性があるので)、例えば、割り当てのヒープサイズに十分なスペースを見つけることになり、時間、あなたは特定のmallocとfreeソースコードを見ることができ、彼らは余分な作業の多くを行うが、スタックは、これらを必要としません。要約すると、ヒープより効率的なスタック

公開された90元の記事 ウォン称賛56 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_37266079/article/details/104351199