释放堆中的内存块

时间:2016-01-29 11:41:39

标签: c memory memory-management heap heap-memory

我目前正在开展一个学校项目,并尝试了解free()功能背后的操作。

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

只会将其设置为“可用”以允许擦除它(数据替换...)

2 个答案:

答案 0 :(得分:4)

free仅释放内存,它不会用0 - s填充它。
释放它之后,写入或读取该存储器将导致不确定的行为。

答案 1 :(得分:0)

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

有关详细信息,请查看How do malloc() and free() work?