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