在C代码中使用数百万个malloc()和free()的结果?

Bat*_*n05 5 c memory malloc free

我最近在接受采访时被问到这个问题.

假设有一个庞大的C程序库,每个程序都有malloc()s和free()s块的数据.如果你的程序中有一百万次调用malloc()free()一次运行,你认为会发生什么?如果给你一个非常大的内存堆存储,你会给你的答案添加什么?

jau*_*udo 6

可能发生的一件事是你的内存将被分割,特别是如果你分配不同大小的块.

因此,如果您的内存大小不大,则某些malloc可能会失败,即使总可用内存大于请求的内存大小.