免费软件如何确定免费的程度?

513
在C编程中,您可以将任何类型的指针作为free函数的参数传递,那么它如何知道要释放的内存大小呢?当我将指针传递给某个函数时,我必须同时传递大小(例如,一个有10个元素的数组需要接收10作为参数以了解数组的大小),但是在free函数中不必传递大小。为什么不需要,并且我可以在自己的函数中使用这种技术来避免携带额外的数组长度变量吗?

一个类似的问题:https://dev59.com/MnRA5IYBdhLWcg3wuAYo(虽然我认为它不完全是重复的) - John Carter
“伙伴系统”是另一种方法,可以根据指针而无需在每个块中添加开销来进行。 - EvilTeach
这篇文章讲得很清楚:https://dev59.com/ZHI-5IYBdhLWcg3wO1vl - Zeeshan
11个回答

0
当我们调用malloc时,它会从其需求中简单地消耗更多的字节。这种更多的字节消耗包含诸如校验和、大小和其他附加信息的信息。 当我们调用free时,它直接转到该附加信息,找到地址并找到将要释放多少块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接