如果使用malloc()
为4个整数分配内存,它是否应该返回第一个整数的内存地址?如果是这样的话,不应该free()
只释放内存中的第一个整数,而其他所有整数都被遗忘了吗?
答案 0 :(得分:3)
不应该free()只释放内存中的第一个整数,而其他所有整数都留在
不,它不应该,因为否则调用free
会导致大部分时间内存泄漏。
要回答我认为您可能想问的问题,free
必须解除分配其参数指向的整个内存块。它是如何做到具体的实现,但为了实现这一点,必须在幕后进行一些簿记。
答案 1 :(得分:3)
malloc()
会跟踪所做的分配,包括其大小,free()
必须准确给出malloc()
返回的地址,这会导致整个分配立即被释放。< / p>