工学1号馆

home

malloc 深入剖析1–引言

Wu Yudong    July 26, 2016     C   740   

什么是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

No comments yet.
To verify that you are human, please fill in "七"(required)