malloc(10)
是否分配了10个字节的内存?
malloc(10 * sizeof(int))
分配40个字节的内存?
答案 0 :(得分:1)
就代码可用的内存而言,假设目标系统上的sizeof(int)
为4,两个答案都是"是"。但是,还需要考虑两个因素:
malloc
使用少量内存来计算它分配给程序的块,从而导致一些与实现相关的开销malloc
可以分配比代码请求的内存更多的内存。虽然您的代码无法使用额外的内存,但它无法进行进一步的分配。当您多次呼叫malloc
时,这一点变得很重要:例如,当您拨打malloc(10)
1,000,000次时,可用内存量可能会下降几个额外的兆字节,而预期的10 MB + malloc
的开销。