【问题标题】:How does "free" know how many bytes it has to free [duplicate]“免费”如何知道它必须释放多少字节[重复]
【发布时间】:2011-12-08 10:16:44
【问题描述】:

可能重复:
C programming : How does free know how much to free?

在 C 中,函数 malloc 接受一个参数,指定要分配多少字节。 函数 free 不接受任何参数,而是一个指针。 free 如何知道它需要释放多少字节?

【问题讨论】:

    标签: c


    【解决方案1】:

    诸如分配大小之类的信息保存在内存分配器本身中。

    在内部,有一些数据结构保存了所有活动内存分配、它们的大小和地址的列表。它的具体工作方式相当复杂,因为有许多不同的内存分配算法适用于不同的目的和分配大小。

    通常,大小存储为位于malloc() 返回的地址下方的固定偏移量,但这只是一个实现细节。

    【讨论】:

      【解决方案2】:

      一种相当常见的分配方式是通过 sizeof(size_t) 增加分配并在开始时存储长度,然后返回指向其余已分配内存的指针。然后释放内存只需要查看被隐藏的长度。

      【讨论】:

        猜你喜欢
        • 2017-07-25
        • 2010-12-30
        • 2020-11-15
        • 1970-01-01
        • 2012-07-28
        相关资源
        最近更新 更多