我目前正在开展一个学校项目,并尝试了解free()
功能背后的操作。
malloc
将在堆中分配一个块。
如果我们想释放这个块,这个块是否会完全设置为'0'
值(使用brk)
或
只会将其设置为“可用”以允许擦除它(数据替换...)
答案 0 :(得分:4)
free
仅释放内存,它不会用0
- s填充它。
释放它之后,写入或读取该存储器将导致不确定的行为。
答案 1 :(得分:0)
除了@ViktorSimkó,回答free
将删除标题并将其添加回空闲内存列表。如果它与周围的自由块形成一个更大的块,当用户需要更大的块时,它们将被加在一起以产生更大的块。如果整个页面现在都是空闲的,那么分配器很可能会将页面返回给操作系统。
有关详细信息,请查看How do malloc() and free() work?