C : フリーストアとヒープの区別を明らかにする
動的メモリ割り当ての領域では、C は 2 つの主要なメカニズムを提供します。 /削除とmalloc/free。どちらもヒープ上で動作するとよく言われますが、「フリーストア」と「ヒープ」という用語の間に実際的な区別があるのかという疑問が生じます。
明確な違いはありますか?コンパイラはこれらの用語をどのように処理するのでしょうか?
その答えは、C メモリ管理の進化にあります。歴史的に、「ヒープ」とは、特に malloc/free 関数によって管理されるメモリ領域を指しました。ただし、new 演算子と delete 演算子の導入により、別の「フリーストア」概念が登場しました。これは、2 つのメモリ管理システムを強制的に分離し、異なるアロケータが誤って混在することを防ぐことを目的としていました。
今日、 C では、free-store と heap の区別はほとんど概念的になりました。 new/delete と malloc/free は両方とも、通常はオペレーティング システムによって管理される同じプールからメモリを割り当てます。ただし、使用法は依然として異なります。 new/delete はコンストラクターとデストラクターを必要とするオブジェクトで使用されますが、malloc/free はより柔軟で、生のメモリ割り当てに使用されます。
インタビューでは、従来の区別を強調するのが一般的です。
ただし、インタビュアーは、最新のコンパイラがこれらの区別を厳密に強制していないことが多く、両方の演算子が同じメモリ空間にアクセスできる可能性があることも認めるかもしれません。
以上がC のフリー ストアとヒープには実際の違いがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。