9

これは前の質問のサブセットです。

演習として、メモリ マネージャを作成しています。つまり、malloc、realloc、および free (または new と delete) を実装するコードです。私の言語 Delphiの RTL では、RTL のメモリ マネージャを簡単に置き換えることができます。C++ を使用している場合、これは new と delete のオーバーライドに似ていますが、より低レベルです (言語機能ではなく、RTL 自体にフックされます)。

他の人が同じ問題に対して行った高品質のアプローチに関するリソースを探しており、他の主要なコンパイラ ベンダーが使用しているアルゴリズムを見つけようとしています。Delphi は十分に文書化されていますが、MS VC++、.Net、または Objective C で使用される実装に関する情報は見つかりません。これらのベンダーは、Delphi のように RTL をフックすることを許可していないようです (?)。ランダムな例を選ぶなど、すべてのドキュメントは高レベルのようですNSAutoReleasePool-この質問には高すぎるレベルです。

主要なベンダー (Microsoft VC++ と .Net、および Apple Objective C) がランタイム ライブラリで使用しているメモリ管理アルゴリズムは何ですか?

優れた回答の例は、このようなメモリ マネージャーの実装を説明するドキュメント、または公開された論文へのリンクです。有用な回答の例は、「VC++ ランタイムはHoard アロケーターを使用する」というアルゴリズムです。

4

1 に答える 1