【问题标题】:Free a memory block in the heap释放堆中的内存块
【发布时间】:2016-05-07 03:19:21
【问题描述】:

我目前正在做一个学校项目,我试图了解free() 函数背后的操作。

malloc 将在堆中分配一个块。 如果我们想释放这个块,这个块是否会完全设置为'0' 值(使用 brk)

是否仅将其设置为“可用”以允许对其进行擦除(数据替换...)

【问题讨论】:

    标签: c memory memory-management heap-memory


    【解决方案1】:

    free 只释放内存,它不会用0-s 填充它。
    在释放它之后,写入或读取该内存将导致未定义的行为。

    【讨论】:

      【解决方案2】:

      除了@Viktor Simkó 回答free 将删除标题并将其添加回空闲内存列表。如果它与周围的空闲块形成一个更大的块,当用户需要更大的块时,这些块将被添加在一起以提供更大的块。如果整个页面现在是空闲的,分配器很可能会将页面返回给操作系统。

      更多信息请关注How do malloc() and free() work?

      【讨论】:

        猜你喜欢
        • 2016-07-25
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 2018-11-29
        • 2013-02-28
        • 2011-08-21
        • 1970-01-01
        • 2014-08-16
        相关资源
        最近更新 更多