2

目前正在编写一个代码,我意识到它曾经malloc多次调用(大约 1000 万次调用)并且每次都分配小块(大约 10 个字节)。

我稍微更改了代码,而不是调用malloc1000 万次,我现在调用malloc10 次,每次都分配一大块内存(1000 万字节)。

通过此更改,我注意到我的代码的峰值内存消耗从 ~15 GB 变为 ~14 GB。

为什么会这样?malloc每次调用都会分配一些额外的块吗?

4

1 回答 1

7

确实。因为malloc()为元数据分配了一些字节。所以如果多个 malloc() 导致更多的元数据。

链接为您提供有关 malloc 如何分配内存和元数据的更多详细信息。

于 2012-12-04T11:42:48.330 回答