【发布时间】:2011-08-22 11:55:06
【问题描述】:
今天我去面试,面试官问我这个,
- 告诉我步骤你将如何设计你自己的
free( )函数 释放分配的内存。- 怎么比C默认的
free()函数效率更高呢?你能得出什么结论?
我很困惑,想不出设计的方式。
你们觉得呢?
编辑:既然我们需要了解malloc() 的工作原理,你能告诉我编写我们自己的malloc() 函数的步骤吗
【问题讨论】:
-
您还需要自己的
malloc才能使这个有用,对吧? -
由于标准没有指定
free的实现,我看不出有人怎么可能回答2。 -
你不能给出一个绝对的答案,但它确实创造了一个很好的话题——这可能就是重点!我同意您需要自己的 malloc ,否则没有重用内存的余地。确实指出这些“显而易见”的事情可能是他/她所追求的,然后是关于如何编写高效的动态内存分配系统(速度与内存等)的更深入讨论。记住:面试官不是想欺骗你,而是想看看你如何解决问题以及你知道什么。大声思考并要求澄清。向他们展示你所知道的!
-
除非面试官不称职,否则我怀疑他们正在寻找更多用于存储和管理空闲块列表的算法......
-
实际向操作系统请求内存只是malloc/free实现的一部分... C实际上向操作系统请求'大'块内存,然后保持一个链表“空闲”内存位置。当内存被释放时,它会返回到空闲列表。另请注意,实施的第 0 步是每年增加 4 万美元的薪水,这与维护极其难以调试的系统相关代码有关。