免费功能()
问题描述:
我想了解free()
的工作原理。在下面的例子中,free()
如何知道块中需要释放多少个字节?免费功能()
#include <stdlib.h>
int main()
{
char *p= NULL;
int size = 25;
p = (char *)malloc(size);
/* some operation on p */
free(p);
}
答
这是实施的具体,定义的唯一的事情是应该像它的工作原理到应用程序,并实现可以*使用任何结构,它需要提供良好的性能/低内存占用/。 ..
作为一个例子,一种方法是在块返回之前预留几个字节,并在那里存储大小。例如,如果您使用的是25个字节,它实际上会保留29个字节,将大小存储在前4个字节中,并返回指向最后25个字节的指针。 free()
然后可以拿指针,减4并读取大小。
另一种方法是将地址/大小存储在散列表中,这样当有人调用free()
时,它可以在散列表中查看大小。
人们不应该downvote重复的问题。重复的问题并不意味着它是一个低质量的问题,这意味着其他人已经提出了这样的问题。 Asker在发布这个问题之前没有搜索过。 –
@ Mr.32当你将鼠标悬停在downvote上时,它会向你显示一个上下文提示:“这个问题没有显示任何研究工作;它不清楚或没有用”。这听起来相当准确,对我来说。 *点击*! – Sebivor