什么是malloc ? 假如你不知道这个名字,你可能需要在Unix环境下学习C语言再来看这个系列的教程。对于一个程序员,malloc是一个在C程序中分配内存块的函数,大多数人不了解其背后的原理,有些人甚至认为是一个系统调用或者是一个C语言的关键字。事实上malloc仅仅是一个简单的函数,并且仅仅需要一点C技巧甚至不需要系统知识就能理解。
这个系列教程的目的是编写一个简单的 malloc函数来理解底层的相关概念。我们不去编写一个高效的malloc函数,仅仅一个基础的,但是背后的概念对于理解内存管理与如何处理块分配、重分配以及释放将非常有益。
本文地址:http://wuyudong.com/2016/07/26/2316.html,转载请注明源地址。
从教学的角度来看,这是一个很好的C实践。这也是一个很好的资料来理解你使用的指针怎么产生,以及事情是如何在堆中被组织的。
什么是malloc
malloc(3)是一个用来分配内存块的标准 C 库函数 。它遵守以下规则:
- malloc 至少分配要求的字节数
- malloc 函数返回的指针指向分配的空间(例如一个空间,程序可以在里面成功读取或写入)
- 其他malloc调用不能分配这个空间或它的任何部分,除非其指针之前已被释放
- malloc 应该易处理:malloc释放必须尽可能快(不应该是NP-难!)
- malloc 也应提供调整和释放。
函数遵循以下签名:
void * malloc(size_t size);
其中size是请求的大小。如果分配失败返回的指针是空的(没有空间了)
Comments