私は現在malloc
、宿題の実装を勉強しています。
glibcで使用されるptmallocやFreeBSDで使用されるjemallocなどのmalloc実装のバージョンがいくつか存在することを私は知っています。
Visual C ++で採用されている実装のバージョンはどれですか?または、VC ++チームは独自のバージョンを実装したばかりですか?
私は現在malloc
、宿題の実装を勉強しています。
glibcで使用されるptmallocやFreeBSDで使用されるjemallocなどのmalloc実装のバージョンがいくつか存在することを私は知っています。
Visual C ++で採用されている実装のバージョンはどれですか?または、VC ++チームは独自のバージョンを実装したばかりですか?
独自のリダイレクタを記述せずに VC++ コンパイル済みプログラムでmalloc
またはを呼び出すと、NT ヒープとも呼ばれる になります。new
HeapAlloc
NT ヒープは、Windows メモリ チームによって開発されました。これらの人は、OS のすべてのメモリ管理を担当します。ユーザー モード プロセスに仮想空間を割り当てます。彼らはドライバーなどのメモリを処理します。同じチームがアプリケーション コードの小さな割り当て用のコードを提供するのは論理的です。私の経験からすると、NT ヒープは良いことです。大きな欠陥はありません。非常に具体的な要件がある場合は、他のアロケーターの方がパフォーマンスが良い場合があります。一般的に、NT ヒープは適切な出発点です。ほとんどの場合、それはあなたのニーズを満たします。
VC++ はコンパイラであることに注意してください。オペレーティング システムの制御下で実行される実行可能ファイルを作成します。「VC++実行環境」について語るのは正しくありません。
それにもかかわらず、コンパイラ自体がコードをコンパイルするときに NT ヒープを使用していないことはわかっています。独自のアロケーターを使用します。彼らがそうした正確な理由はわかりません。