2

現在コードに取り組んでいると、以前はmalloc複数回 (約 1,000 万回の呼び出し) 呼び出され、毎回小さなチャンク (約 10 バイト) が割り当てられていたことに気付きました。

コードを少し変更し、malloc1,000 万回呼び出す代わりに、 malloc10 回呼び出して、毎回大量のメモリ (1,000 万バイト) を割り当てます。

この変更により、コードのピーク メモリ消費量が ~15 GB から ~14 GB に変化したことに気付きました。

なぜこうなった?malloc呼び出しごとに余分なチャンクを割り当てますか?

4

1 に答える 1

7

絶対。malloc()メタデータにある程度のバイトを割り当てるためです。したがって、複数の malloc() がより多くのメタデータにつながる場合。

このリンクでは、malloc がメモリとメタデータを割り当てる方法について詳しく説明しています。

于 2012-12-04T11:42:48.330 に答える