在 C 编程中,您可以将您喜欢的任何类型的指针作为参数传递给 free,它如何知道要释放的已分配内存的大小?每当我传递一个指向某个函数的指针时,我也必须传递大小(即一个 10 个元素的数组需要接收 10 个作为参数才能知道数组的大小),但我不必将大小传递给免费功能。为什么不呢,我可以在我自己的函数中使用同样的技术来避免我需要处理数组长度的额外变量吗?

最佳答案

当您调用 malloc() 时,您指定要分配的内存量。实际使用的内存量略多于此,并且包括记录(至少)块有多大的额外信息。你不能(可靠地)访问其他信息——你也不应该:-)。

当您调用 free() 时,它只是查看额外信息以找出块有多大。

关于c - free怎么知道要免费多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1518711/

10-12 12:52
查看更多