フリーストアとヒープ: C では別個のエンティティですか?
C では、用語「フリーストア」と「ヒープ」 「」は、動的割り当てが管理されるメモリ領域を指すために同じ意味で使用されることがよくあります。ただし、これらの用語に実際的な違いがあるかどうかを理解することが重要です。
概念的な区別
歴史的に、フリーストアは動的に割り当てられるために予約されているメモリ領域でした。 「new」および「delete」演算子を使用してオブジェクトを作成します。一方、ヒープは、下位レベルでメモリを割り当てるために「malloc」と「free」によって使用される別個の領域でした。この区別は、異なるメモリ管理メカニズムの混合と潜在的な競合を防ぐことを目的としています。
コンパイラの観点
最新の C 実装では、フリーストアとヒープの区別は主に行われています。概念的な。通常、コンパイラは 2 つの用語を実質的に区別しません。 "new" と "malloc" は両方とも、同じ基礎となるメモリ管理システムからメモリを割り当てます。
メモリ使用量
理論的には可能ですが、コンパイラがメモリを割り当てる可能性は低いです。 「new」と「malloc」は別々のメモリ空間にあります。どちらのメカニズムも同じヒープ領域内でメモリを割り当てます。ただし、一部の C コンパイラは、特定のヒープ領域からメモリを割り当てることができるコンパイラ固有のオプションを提供している場合があることに注意してください。
結論
実際には、次の用語が使用されます。 C では、「free-store」と「heap」は機能的に同等です。どちらも、動的メモリ割り当てに使用される同じメモリ領域を指します。 2 つの用語の区別は、主に、コードを適切に構成するために「new/delete」と「malloc/free」の使用を区別することを思い出させるために役立ちます。これは、 C でのメモリ割り当ての実際の動作に影響を与える厳密な分割ではありません。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3