5

私は現在malloc、宿題の実装を勉強しています。

glibcで使用されるptmallocやFreeBSDで使用されるjemallocなどのmalloc実装のバージョンがいくつか存在することを私は知っています。

Visual C ++で採用されている実装のバージョンはどれですか?または、VC ++チームは独自のバージョンを実装したばかりですか?

4

1 に答える 1

10

独自のリダイレクタを記述せずに VC++ コンパイル済みプログラムでmallocまたはを呼び出すと、NT ヒープとも呼ばれる になります。newHeapAlloc

NT ヒープは、Windows メモリ チームによって開発されました。これらの人は、OS のすべてのメモリ管理を担当します。ユーザー モード プロセスに仮想空間を割り当てます。彼らはドライバーなどのメモリを処理します。同じチームがアプリケーション コードの小さな割り当て用のコードを提供するのは論理的です。私の経験からすると、NT ヒープは良いことです。大きな欠陥はありません。非常に具体的な要件がある場合は、他のアロケーターの方がパフォーマンスが良い場合があります。一般的に、NT ヒープは適切な出発点です。ほとんどの場合、それはあなたのニーズを満たします。

VC++ はコンパイラであることに注意してください。オペレーティング システムの制御下で実行される実行可能ファイルを作成します。「VC++実行環境」について語るのは正しくありません。

それにもかかわらず、コンパイラ自体がコードをコンパイルするときに NT ヒープを使用していないことはわかっています。独自のアロケーターを使用します。彼らがそうした正確な理由はわかりません。

于 2012-06-20T20:47:36.593 に答える