专栏名称: 深度Linux
拥有15年项目开发经验及丰富教学经验,曾就职国内知名企业项目经理,部门负责人等职务。研究领域:Windows\x26amp;Linux平台C/C++后端开发、Linux系统内核等技术。
今天看啥  ›  专栏  ›  深度Linux

腾讯一面:malloc是如何分配内存的,free怎么知道该释放多少内存?

深度Linux  · 公众号  ·  · 2024-08-22 09:10
    

文章预览

一般而言,malloc会维护一个内部的数据结构,用于跟踪空闲的内存块。当调用malloc时,它会根据请求的大小,在这个数据结构中找到合适大小的空闲块,并将其标记为已分配状态。然后,返回指向该内存块起始地址的指针。至于free函数,它接受一个先前由malloc或类似函数返回的指针作为参数。通过这个指针,free可以确定要释放的内存块在堆中的位置。通常情况下,这些信息是保存在堆中分配给用户使用的内存块之前几个字节中。 因此,当调用free时,它会使用这些额外信息找到要释放的内存块,并将其标记为空闲状态以便再次被分配使用。free并不需要显式地知道要释放多少字节的内存,而是依赖于这些额外信息来管理和处理对应内存块。 内存分配有三种方式: 从静态存储区分配,生命周期随程序的结束而结束,比如全局变量,静态变量。 从栈 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览