これは前の質問のサブセットです。
演習として、メモリ マネージャを作成しています。つまり、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) がランタイム ライブラリで使用しているメモリ管理アルゴリズムは何ですか?
- Embarcadero Delphi と C++ Builder は十分に文書化されています。
- Linux は Buddy を使用しているようですが、この情報は古くなっていると思います。
- MS VC++: 不明。
- .Net: 不明。
- オブジェクティブ C: 不明。
優れた回答の例は、このようなメモリ マネージャーの実装を説明するドキュメント、または公開された論文へのリンクです。有用な回答の例は、「VC++ ランタイムはHoard アロケーターを使用する」というアルゴリズムです。