《嵌入式Linux与物联网软件开发——C语言内核深度解析》一1.8 内存管理之堆
本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.8节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.8 内存管理之堆 1.8.1 什么是堆 堆(heap)也是一种动态内存管理方式。内存管理对操作系统来说是一件非常复杂的事情,因为首先内存容量很大,其次内存需求在时间和大小块上没有规律(操作系统上运行着的几十、几百、几千个进程随时都会申请或者释放内存,申请或者释放的内存块大小随意)。 堆这种内存管理方式特点就是自由(随时申请、释放,大小块随意)。我们前面就讲过这两个API(malloc和free),那时候我们只是讲了用这两个接口可以申请和释放内存,但并没有说是从什么地方申请,以及通过什么申请。其实它们申请释放的内存来源于堆内存,然后向使用者(用户进程)提供API(malloc和free)来使用堆内存。我们什么时候使用堆内存?需要内存容量比较大时,以及需要反复使用及释放时(动态特性),很多数据结构(譬如链表)的实现都要使用堆内存。 1.8.2 堆管理内存的特点(大块内存、手工分配/使用/释放) 特点一:容...