目前正在编写一个代码,我意识到它曾经malloc
多次调用(大约 1000 万次调用)并且每次都分配小块(大约 10 个字节)。
我稍微更改了代码,而不是调用malloc
1000 万次,我现在调用malloc
10 次,每次都分配一大块内存(1000 万字节)。
通过此更改,我注意到我的代码的峰值内存消耗从 ~15 GB 变为 ~14 GB。
为什么会这样?malloc
每次调用都会分配一些额外的块吗?
目前正在编写一个代码,我意识到它曾经malloc
多次调用(大约 1000 万次调用)并且每次都分配小块(大约 10 个字节)。
我稍微更改了代码,而不是调用malloc
1000 万次,我现在调用malloc
10 次,每次都分配一大块内存(1000 万字节)。
通过此更改,我注意到我的代码的峰值内存消耗从 ~15 GB 变为 ~14 GB。
为什么会这样?malloc
每次调用都会分配一些额外的块吗?
确实。因为malloc()
为元数据分配了一些字节。所以如果多个 malloc() 导致更多的元数据。
此链接为您提供有关 malloc 如何分配内存和元数据的更多详细信息。