什么:malloc(10)和malloc(10 * sizeof(int))

时间:2016-12-12 18:50:06

标签: malloc

malloc(10)是否分配了10个字节的内存? malloc(10 * sizeof(int))分配40个字节的内存?

1 个答案:

答案 0 :(得分:1)

就代码可用的内存而言,假设目标系统上的sizeof(int)为4,两个答案都是"是"。但是,还需要考虑两个因素:

  • malloc使用少量内存来计算它分配给程序的块,从而导致一些与实现相关的开销
  • 内部malloc可以分配比代码请求的内存更多的内存。虽然您的代码无法使用额外的内存,但它无法进行进一步的分配。

当您多次呼叫malloc时,这一点变得很重要:例如,当您拨打malloc(10) 1,000,000次时,可用内存量可能会下降几个额外的兆字节,而预期的10 MB + malloc的开销。