C免费记忆免费使用

时间:2015-02-21 13:42:58

标签: c memory

如果使用malloc()为4个整数分配内存,它是否应该返回第一个整数的内存地址?如果是这样的话,不应该free()只释放内存中的第一个整数,而其他所有整数都被遗忘了吗?

2 个答案:

答案 0 :(得分:3)

  

不应该free()只释放内存中的第一个整数,而其他所有整数都留在

不,它不应该,因为否则调用free会导致大部分时间内存泄漏。

要回答我认为您可能想问的问题,free必须解除分配其参数指向的整个内存块。它是如何做到具体的实现,但为了实现这一点,必须在幕后进行一些簿记。

答案 1 :(得分:3)

malloc()会跟踪所做的分配,包括其大小,free()必须准确给出malloc()返回的地址,这会导致整个分配立即被释放。< / p>